最近我们将PHP 5.6迁移到了PHP 7
现在跟随代码抛出$this->a =& new test($this->f);
Parse error: syntax error, unexpected 'new' (T_NEW)
任何想法?我能用它做什么变化?
答案 0 :(得分:6)
根据PHP7不兼容的更改:http://php.net/manual/en/migration70.incompatible.php
无法通过引用分配新对象
无法再将新语句的结果分配给a 通过引用变量:
<?php class C {} $c =& new C; ?>
PHP 5中上述示例的输出:
不推荐使用:通过引用分配new的返回值是 在第3行的/tmp/test.php中弃用
PHP 7中输出上述示例:
解析错误:语法错误,/ tmp / test.php中出现意外的“新”(T_NEW) 在第3行
别无选择。您使用的是不推荐使用的行为,现在它不再是有效的PHP。只是不要通过引用分配。
答案 1 :(得分:1)
澄清Marc B的回答:只需删除这样的&符号
$this->a = new test($this->f);
答案 2 :(得分:0)
您可以选择以下方法:
$test = new test($this->f);
$this->a = $test;
现在$ test通过引用传递了,如果您更改$ this-> a的属性,$ test属性也将更改。相反。
默认情况下,PHP 7默认为pas。如果您不想通过引用传递对象,则应执行以下操作:
$a = clone $b;