是否支持php 7中的引用?

时间:2016-09-26 19:45:07

标签: syntax-error pass-by-reference php-7

最近我们将PHP 5.6迁移到了PHP 7

现在跟随代码抛出$this->a =& new test($this->f);

Parse error: syntax error, unexpected 'new' (T_NEW) 

任何想法?我能用它做什么变化?

3 个答案:

答案 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;