2011-11-22 66 views

回答

6

如果使用PHP5,沒有任何區別。

如果使用PHP4,前者會傳遞對新對象的引用。

這是因爲「new」默認不返回引用,而是返回一個副本。

Source

Give this a read, too

+0

在PHP4中,將有新對象的引用有什麼區別做什麼呢? – Casebash

+1

@Casebash:PHP4複製對象實例,而不是默認傳遞引用。 '&'是* reference *操作符。 – alex

3

使用PHP5?那麼你應該使用以下內容:

$myVar=new MyClass(); 

這是公認的方式來初始化一個類。


使用時啓用E_STRICT如下:

$myVar=&new MyClass(); 

將導致PHP運行環境,提高預警Deprecated: Assigning the return value of new by reference is deprecated

+0

它爲什麼會發出警告?有什麼可以出錯的? – Casebash

+0

@Casebash:這只是一個暗示,行爲已經改變了以前的主要版本,並且行爲現在是隱含的我猜。 – alex

+0

@Casebash:這是不贊成的行爲。在PHP5中沒有理由爲什麼要在實例初始化之前放置&&。 –

0

&new已從PHP7中刪除,您必須改用new

的新分配的參考

由於通過引用PHP 5.3分配的新的表達是 棄用。它可以用一個普通的賦值來代替1):

//替代$ obj = & new ClassName;

//寫入$ obj = new ClassName;

由於 PHP 5.0,不再需要通過引用來指定返回值。

檢查這個線程https://wiki.php.net/rfc/remove_deprecated_functionality_in_php7

相關問題