4

我正在为 PHP 5.3 转换一些旧的 PHP 4.x 代码。我遇到了以下情况,但我不确定它的作用。

$variable =& new ClassName();

那和有什么区别:

$variable = new ClassName();
4

2 回答 2

6

在 PHP4 的 Ye Olde Days 中,构造对象时需要 =&。在 PHP 5 中,它不是。

=&做参考分配。

例如:

$a = 'a';
$b =& $a;
$b = 'b';
echo $a; // Prints 'b', since a and b have been linked by &=.

换句话说,它有它的用途,只是在实例化一个对象时没有。对于这种用途,它已被弃用。

于 2009-12-10T05:12:47.223 回答
3

在 PHP4 中,对象默认通过值传递,而不是通过引用传递。这意味着对象的副本是在分配时制作的。如果你想通过引用而不是值传递对象,你可以使用&操作符。在 PHP5 中,对象默认通过引用传递。所以&在处理对象时不再需要。默认情况下,基元(或在 PHP 世界中通常称为标量)仍按值传递。

&我发现在将 OO PHP4 代码迁移到 PHP5 时,会删除很多s。

于 2009-12-10T05:28:09.257 回答