我正在为 PHP 5.3 转换一些旧的 PHP 4.x 代码。我遇到了以下情况,但我不确定它的作用。
$variable =& new ClassName();
那和有什么区别:
$variable = new ClassName();
我正在为 PHP 5.3 转换一些旧的 PHP 4.x 代码。我遇到了以下情况,但我不确定它的作用。
$variable =& new ClassName();
那和有什么区别:
$variable = new ClassName();
在 PHP4 的 Ye Olde Days 中,构造对象时需要 =&。在 PHP 5 中,它不是。
=&
做参考分配。
例如:
$a = 'a';
$b =& $a;
$b = 'b';
echo $a; // Prints 'b', since a and b have been linked by &=.
换句话说,它有它的用途,只是在实例化一个对象时没有。对于这种用途,它已被弃用。
在 PHP4 中,对象默认通过值传递,而不是通过引用传递。这意味着对象的副本是在分配时制作的。如果你想通过引用而不是值传递对象,你可以使用&
操作符。在 PHP5 中,对象默认通过引用传递。所以&
在处理对象时不再需要。默认情况下,基元(或在 PHP 世界中通常称为标量)仍按值传递。
&
我发现在将 OO PHP4 代码迁移到 PHP5 时,会删除很多s。