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->$a<a href="">0</a>时,会先执行$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类

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容