php5.6升级到php7.1遇到得变更
2021-03-12 本文已影响0人
wwwxi
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类