&符号&'的重点是什么?在'new'关键字之前?

时间:2011-10-25 12:56:42

标签: php oop

你为什么要这样做?

$a = &new <someclass>();

例如,SimpleTest的SimpleBrowser文档使用此语法(http://www.simpletest.org/en/browser_documentation.html)。

$browser = &new SimpleBrowser();

对此有用吗?这是PHP 4的遗物吗?

编辑:

我理解&符号通过引用返回,但是通过引用返回对象的新实例是什么意思?

2 个答案:

答案 0 :(得分:3)

在PHP5中,对象为passed using opaque object handles。你仍然可以引用一个持有这样一个句柄的变量并给它另一个值;这就是&new构造在PHP5中的作用。它似乎并没有特别有用 - 除非你明确克隆它,只有一个特定对象实例的副本,如果你愿意,你可以在实例化后随时引用它的句柄。所以我的猜测是你找到的代码是&new是必要模式时的保留。

答案 1 :(得分:2)

由于PHP5 new自动返回引用。因此在这种情况下使用=&是没有意义的(如果我没有错误地给出E_STRICT消息)。

在PHP5之前,使用=&是为了获得对象的引用。如果你将对象初始化为一个变量,然后将它分配给一个新变量,这两个变量在同一个对象上运行,就像今天在PHP5中一样。