热门IT资讯网

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取数组元素作动态函数名有什么差异就分享到这里了,当然并不止以上和大家分析的办法,不过小编可以保证其准确性是绝对没问题的。希望以上内容可以对大家有一定的参考价值,可以学以致用。如果喜欢本篇文章,不妨把它分享出去让更多的人看到。

0