你为什么要这样做?
$a = &new <someclass>();
例如,SimpleTest 的 SimpleBrowser 的文档使用这种语法 ( http://www.simpletest.org/en/browser_documentation.html )。
$browser = &new SimpleBrowser();
这有什么用吗?这是 PHP 4 的遗物吗?
编辑:
我知道与号通过引用返回,但是通过引用返回对象的新实例有什么意义呢?
你为什么要这样做?
$a = &new <someclass>();
例如,SimpleTest 的 SimpleBrowser 的文档使用这种语法 ( http://www.simpletest.org/en/browser_documentation.html )。
$browser = &new SimpleBrowser();
这有什么用吗?这是 PHP 4 的遗物吗?
编辑:
我知道与号通过引用返回,但是通过引用返回对象的新实例有什么意义呢?
在 PHP5 中,使用不透明对象句柄传递对象。你仍然可以引用一个持有这样一个句柄的变量并给它另一个值;这就是该&new
构造在 PHP5 中所做的。不过它似乎并不是特别有用——除非你明确地克隆它,否则只有一个特定对象实例的副本,如果你愿意,你可以在实例化后随时引用它的句柄。所以我的猜测是你发现的代码&new
是一个必要模式的保留。
由于 PHP5new
自动返回引用。因此,在这种情况下使用=&
是没有意义的(如果我没有弄错 E_STRICT 消息)。
PHP5 之前的用途=&
是获取对对象的引用。如果您将对象初始化为一个变量,然后将其分配给一个新变量,那么这两个变量都对同一个对象进行操作,就像今天在 PHP5 中一样。