写作的重点是:$ foo =&new someClass();?

| 由于使用的是图书馆,我收到了过时的警告。该语句如下:
$this->_ole =& new OLERead();
问题是我不明白为什么要在实例化中使用
& new
。  如果我没记错的话,
&
运算符告诉PHP将引用复制到实例,而不是实例本身。但是在这种情况下,索要未存储的引用副本是否毫无意义? 但是由于我不完全了解ѭ3的工作原理,因此可能应该保存一些晦涩的垃圾收集或类似的内容。 您如何看待?     
已邀请:
        从文档中:   从PHP 5开始,new运算符会自动返回引用,因此在PHP 5.3和更高版本中,按引用分配new结果将导致出现
E_DEPRECATED
消息,而在早期版本中出现
E_STRICT
消息。 您使用的库可能是为PHP 4开发的。 关于迁移原因的有用信息也可以在迁移指南中找到:   在PHP 5中,有一个新的对象模型。 PHP对对象的处理已被完全重写,以实现更好的性能和更多功能。在以前的PHP版本中,对象的处理方式类似于原始类型(例如整数和字符串)。这种方法的缺点是,在语义上,整个对象是在分配变量时复制的,或作为参数传递给方法的。在新方法中,对象是通过句柄而不是值来引用的(可以将句柄视为对象的标识符)。     
        这是PHP4兼容性的惯用法。默认情况下,对象以副本的形式作为副本传递,这是一种始终具有对实例的引用的解决方法。     
        在PHP4中,“ 3”返回一个值而不是引用。 PHP5中不是这种情况。     
        如果您写“ 7”,则任何对象中的_ole更改都会更新对新对象的所有引用。 没有&则不是这种情况。 编辑:是的,在以前的PHP版本中,对象是通过副本传递的。最后,要在各个版本之间保持一致的行为非常困难。     

要回复问题请先登录注册