你为什么要这样做?
$a = &new <someclass>();
例如,SimpleTest的SimpleBrowser文档使用此语法(http://www.simpletest.org/en/browser_documentation.html)。
$browser = &new SimpleBrowser();
对此有用吗?这是PHP 4的遗物吗?
编辑:
我理解&符号通过引用返回,但是通过引用返回对象的新实例是什么意思?
答案 0 :(得分:3)
在PHP5中,对象为passed using opaque object handles。你仍然可以引用一个持有这样一个句柄的变量并给它另一个值;这就是&new
构造在PHP5中的作用。它似乎并没有特别有用 - 除非你明确克隆它,只有一个特定对象实例的副本,如果你愿意,你可以在实例化后随时引用它的句柄。所以我的猜测是你找到的代码是&new
是必要模式时的保留。
答案 1 :(得分:2)
由于PHP5 new
自动返回引用。因此在这种情况下使用=&
是没有意义的(如果我没有错误地给出E_STRICT消息)。
在PHP5之前,使用=&
是为了获得对象的引用。如果你将对象初始化为一个变量,然后将它分配给一个新变量,这两个变量在同一个对象上运行,就像今天在PHP5中一样。