PHP5和PHP7取数组元素作动态函数名有什么差异
发表于:2024-11-27 作者:热门IT资讯网编辑
编辑最后更新 2024年11月27日,今天小编给大家分享的是PHP5和PHP7取数组元素作动态函数名有什么差异,相信很多人都不太了解,为了让大家更加了解PHP5和PHP7取数组元素作动态函数名的差异,所以给大家总结了以下内容,一起往下看吧
今天小编给大家分享的是PHP5和PHP7取数组元素作动态函数名有什么差异,相信很多人都不太了解,为了让大家更加了解PHP5和PHP7取数组元素作动态函数名的差异,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。
在 PHP5 和 PHP7 中通过变量获取函数/方法名执行函数/方法时,可能会由于版本之间不通的解释策略导致相同的代码无法运行。
示例
$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]}()。
具体差异可参考:
关于PHP5和PHP7取数组元素作动态函数名有什么差异就分享到这里了,当然并不止以上和大家分析的办法,不过小编可以保证其准确性是绝对没问题的。希望以上内容可以对大家有一定的参考价值,可以学以致用。如果喜欢本篇文章,不妨把它分享出去让更多的人看到。