我正在爲PHP 5.3轉換一些舊的PHP 4.x代碼。我遇到了以下內容,但我不確定它的功能。PHP:通過引用實例化類?
$variable =& new ClassName();
是什麼那之間的區別,以及:
$variable = new ClassName();
我正在爲PHP 5.3轉換一些舊的PHP 4.x代碼。我遇到了以下內容,但我不確定它的功能。PHP:通過引用實例化類?
$variable =& new ClassName();
是什麼那之間的區別,以及:
$variable = new ClassName();
在PHP4的葉奧爾德天,= &構造對象的時候是必要的。在PHP 5中,事實並非如此。
=&
做參考分配。
例如爲:
$a = 'a';
$b =& $a;
$b = 'b';
echo $a; // Prints 'b', since a and b have been linked by &=.
換句話說,它有它的用途,實例化對象只是不能當。爲了這個用途,它已經被刪除了。
在PHP4中,對象按默認值傳遞,而不是通過引用傳遞。這意味着該對象的副本是在分配時完成的。如果您想通過引用而不是按值傳遞對象,則可以使用&
運算符。在PHP5中,對象默認通過引用傳遞。所以在處理對象時不再需要&
。原始數據(或標量,因爲它們通常在PHP世界中被調用)仍然被默認值傳遞。
我發現在將OO PHP4代碼遷移到PHP5時,很多&
都被刪除。
請參閱http://docs.php.net/language.oop5.references – VolkerK 2009-12-10 05:39:02