PHP: 不能以变量函数的形式调用eval:Undefined function eval()

桃子 2015年9月10日

前两天,有群友问了下面这样一个PHP的问题:

// 为什么这段代码可以运行
// 正常输出:howdy~
$foo = "system";
$bar = "echo howdy~";
$foo($bar);

// 而这段代码却不能运行
// PHP错误是:``PHP Fatal error:  Call to undefined function eval() in - on line ?``
$foo = "eval";
$bar = "echo howdy~";
$foo($bar);

因为PHP支持``变量函数(variable-functions)``:通过变量保存一个函数的名字,然后在其后附上一对小括号的形式即可完成对函数的调用。但为什么当 被调用对象 为 ``eval`` 的时候就不行了呢?

参考PHP官方文档可知:eval 属于PHP语法构造的一部分,并不是一个函数,所以不能通过 变量函数 的形式来调用(虽然她确实像极了函数原型)。这样的语法构造还包括:echo,print,unset(),isset(),empty(),include,require,...

参考链接

  1. PHP: eval - Manual
  2. Undefined function eval() - PHP

发表于:2015年9月10日 ,阅读量:6494 ,标签:php

如果文章有帮助到你,请我喝杯冰可乐吧~