假設你可以在PHP5.4做(new Object)->method()
+我想知道爲什麼我不能做到這一點:PHP分配返回值
<?php
class Item {
public $property = 'test';
}
class Container
{
public function getItem()
{
return new Item();
}
}
echo get_class(($object = (new Container())->getItem())); // returns Item
// this comes up with error
echo ($object = (new Container())->getItem())->property;
爲什麼代碼的最後一行觸發PHP Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR)
編輯:
看起來我需要澄清我的問題,因爲我看到完全與我的問題無關的答案。我不問如何擺脫語法錯誤。我的問題是: 爲什麼我無法訪問表達式($object = (new Container())->getItem())
上的屬性,而get_class()
告訴我這是一個Item的實例?
即使它是可能的,你爲什麼要? – HamZa
那又怎麼樣:'echo(new Container()) - > getItem() - > property;'???或者使它與你的assingment一起工作:echo $ property =(new Container()) - > getItem() - > property;' – shadyyx
@HamZa我不想這樣做,我只是想知道爲什麼get_class告訴我我有Item類的對象,但我無法訪問它的屬性。 –