2009-12-10 61 views
4

我正在爲PHP 5.3轉換一些舊的PHP 4.x代碼。我遇到了以下內容,但我不確定它的功能。PHP:通過引用實例化類?

$variable =& new ClassName(); 

是什麼那之間的區別,以及:

$variable = new ClassName(); 

回答

6

在PHP4的葉奧爾德天,= &構造對象的時候是必要的。在PHP 5中,事實並非如此。

=&做參考分配。

例如爲:

$a = 'a'; 
$b =& $a; 
$b = 'b'; 
echo $a; // Prints 'b', since a and b have been linked by &=. 

換句話說,它有它的用途,實例化對象只是不能當。爲了這個用途,它已經被刪除了。

2

在PHP4中,對象按默認值傳遞,而不是通過引用傳遞。這意味着該對象的副本是在分配時完成的。如果您想通過引用而不是按值傳遞對象,則可以使用&運算符。在PHP5中,對象默認通過引用傳遞。所以在處理對象時不再需要&。原始數據(或標量,因爲它們通常在PHP世界中被調用)仍然被默認值傳遞。

我發現在將OO PHP4代碼遷移到PHP5時,很多&都被刪除。

+0

請參閱http://docs.php.net/language.oop5.references – VolkerK 2009-12-10 05:39:02