php5.6升级到php7.1遇到得变更

1.动态方法调用

$a = ['add', 'sub'];
 
class Test
{
  public function add()
  {
    echo 1 + 2;
  }
}
 
$t = new Test();
$t->$a[0]();

上例在 PHP5.6 下可以正常运行,但在 PHP7 下会抛出 Fatal error: Function name must be a string。这是因为 PHP5 下执行$t->$a0时,会先执行$a[0],获取元素值,然后执行对象的具体方法。

在 PHP7 下,则会先执行 $t->$a ,导致抛出错误,中断执行。如需要在 PHP7 下正常执行,需要修改为$t -> {$a[0]}()。
2.方法参数必须传参

function add($a){
 echo 1;
}
add();//报错
add(1);//不报错

3.变量类型自动转换减少

$res = ['code'=>1,'res'=>''];
$res['res']['a'] = 'sdfaasdfa';//不能正常赋值

$res = ['code'=>1,'res'=>[]];
$res['res']['a'] = 'sdfaasdfa'//可以正常赋值

4.php7.2以上不能使用object类

你可能感兴趣的:(php5.6升级到php7.1遇到得变更)