我有一個方法,將參考引用變量設置爲一個新初始化類
// CarService.php
public function getCars(&$carCollection = null)
{
$promise = // guzzle request for getting all cars would be here
$promise->then(function (ResponseInterface $response) use (&$carCollection) {
$cars= json_decode($response->getBody(), true);
$carCollection= new CarCollection($cars);
});
}
然而,訪問該集合,並試圖重新使用它的時候,我遇到了錯誤
Argument 1 passed to {placeholder} must be an instance of {placeholder}, null given
我知道,這樣做的原因是,該構造函數返回什麼,但我怎麼能還我的變量分配到CarCollection
的新實例(延伸學說的ArrayCollection
)
我甚至有一個靜態方法作爲工作試了一下週圍
// CarCollection.php
public static function create(array $cars): CarCollection
{
$carCollection = new CarCollection($cars);
return $carCollection;
}
// CarService.php
public function getCars(&$carCollection = null)
{
$cars = // curl request for getting all cars would be here
$carCollection = CarCollection::create($cars)
}
,但它仍然是零。這是爲什麼?我如何設置一個引用的變量到一個新的類?
餘像這樣訪問
$carService = $this->get('tzfrs.vehicle.services.car');
$carCollection = null;
$promises = [
$carService->getCars($carCollection)
];
\GuzzleHttp\Promise\unwrap($promises);
var_dump($carCollection); // null
當我設置直接參考,例如該方法。
// CarService.php
public function getCars(&$carCollection = null)
{
$carCollection = new CarCollection([]);
}
它的工作原理沒有任何問題。似乎回調在某種程度上是問題。
無論誰低估了這個,你能否詳細說明爲什麼和爲什麼你投票結束?
你能告訴我們你是如何調用getCars方法嗎? – Petah
當然,我已經添加了一些代碼 – Musterknabe
對不起@PeeHaa,我刪除了它。以爲它會在PHP 7下開發,而不是PHP 7 – Musterknabe