6

你为什么要这样做?

$a = &new <someclass>();

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

$browser = &new SimpleBrowser();

这有什么用吗?这是 PHP 4 的遗物吗?

编辑:

我知道与号通过引用返回,但是通过引用返回对象的新实例有什么意义呢?

4

2 回答 2

3

在 PHP5 中,使用不透明对象句柄传递对象。你仍然可以引用一个持有这样一个句柄的变量并给它另一个值;这就是该&new构造在 PHP5 中所做的。不过它似乎并不是特别有用——除非你明确地克隆它,否则只有一个特定对象实例的副本,如果你愿意,你可以在实例化后随时引用它的句柄。所以我的猜测是你发现的代码&new是一个必要模式的保留。

于 2011-10-25T13:12:29.327 回答
2

由于 PHP5new自动返回引用。因此,在这种情况下使用=&是没有意义的(如果我没有弄错 E_STRICT 消息)。

PHP5 之前的用途=&是获取对对象的引用。如果您将对象初始化为一个变量,然后将其分配给一个新变量,那么这两个变量都对同一个对象进行操作,就像今天在 PHP5 中一样。

于 2011-10-25T13:03:00.890 回答