PHP5和PHP7之间关于取数组元素作动态函数名的差异-PHP7

资源魔 34 0
正在 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->$a<a href="">0</a>时,会先执行$a[0],猎取元素值,而后执行工具的详细办法。

正在 PHP7 下,则会先执行$t->$a,招致抛犯错误,中缀执行。如需求正在 PHP7 下失常执行,需求修正为$t->{$a[0]}()。

详细差别可参考:

4e05032b8edf2d1b0ee2e1a4ef597aa.png

更多编程相干内容,请存眷资源魔编程入门栏目!

以上就是PHP5以及PHP7之间对于取数组元素作静态函数名的差别的具体内容,更多请存眷资源魔其它相干文章!

标签: PHP5 PHP7 php7开发教程 php7开发资料 php7开发自学

抱歉,评论功能暂时关闭!