也许PHP评估范围的事情?

win*_*ter 1 php eval

我遇到以下代码的问题.我只是猜测这是一个范围问题.

public function run() {

    return eval('$this->config();');
    // This will return null.

    return $this->config();
    // This will return my config array right.

}
Run Code Online (Sandbox Code Playgroud)

在有人要求之前:

  1. 测试时,并非两个返回都是"活动的".
  2. 我知道eval是邪恶的,但我正在为管理员构建某种终端来运行PHP代码.

有人对这个终端事有什么建议吗?(我的基本问题仍然是评估...)

Tim*_*per 6

eval返回NULL,因为这是它想要做的.从文档页面开始:

eval()除非return在计算代码中调用,否则返回NULL ,在这种情况下return返回传递给的值.

  • 而且,从同一页面:"代码将在调用eval()的代码范围内执行",因此不存在范围问题. (2认同)