&PHP中的新MyClass()vs new MyClass()

问题描述:

以下是否有区别?&PHP中的新MyClass()vs new MyClass()

$myVar=&new MyClass(); 
$myVar=new MyClass(); 

我编码在PHP

如果使用PHP5,没有任何区别。

如果使用PHP4,前者会传递对新对象的引用。

这是因为“new”默认不返回引用,而是返回一个副本。

Source

Give this a read, too

+0

在PHP4中,将有新对象的引用有什么区别做什么呢? – Casebash

+1

@Casebash:PHP4复制对象实例,而不是默认传递引用。 '&'是* reference *操作符。 – alex

使用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中没有理由为什么要在实例初始化之前放置&&。 –

&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