[英]PHP: Instantiate class by reference?
我正在為PHP 5.3轉換一些舊的PHP 4.x代碼。 我遇到過以下情況,我不確定它的作用。
$variable =& new ClassName();
它有什么區別,和:
$variable = new ClassName();
在PHP4的Ye Olde Days中,=&在構造對象時是必需的。 在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的時候,相當多的&
小號移除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.