Php 从eval()生成lambda函数

Php 从eval()生成lambda函数,php,eval,php-5.3,Php,Eval,Php 5.3,我有几个助手——我想将每个助手的方法重新声明为lambda匿名函数 我试图通过获取helpers方法,然后执行eval函数来实现它,但是它不起作用,我得到了解析错误 我当前的代码: foreach($this->helpers as $helper) { include(master_path . 'helpers/'.$helper.'Helper.php'); $helpe

我有几个助手——我想将每个助手的方法重新声明为lambda匿名函数

我试图通过获取helpers方法,然后执行eval函数来实现它,但是它不起作用,我得到了解析错误

我当前的代码:

            foreach($this->helpers as $helper)
            {
                include(master_path . 'helpers/'.$helper.'Helper.php');

                $helperClass = new applicationHelper();
                $methods = get_class_methods($helperClass);
                foreach($methods as $method )
                {

                    eval ( "\$$method = function (\$text) {
                        \$helperClass->$method(\$text);
                    }");

                }
             }
由于效率方面的担忧,如果您知道的话,我希望有一个更好的解决方案,谢谢! 谢谢大家

这应该行得通:

foreach($methods as $method )
{
    $$method = function($text) use ($method, $helperClass) {
        return $helperClass->$method($text);
    }
}
但我还是不知道你为什么这么做

编辑 PHP5.3.x需要->看这里


这就摆脱了缓慢的
评估

这个问题与你的问题有何不同我不是要你给我解释怎么做-因为我已经解释过了,但它有问题。不管怎样,我已经得到了答案,谢谢
foreach ($this->helpers as $helper) {
    include(master_path . 'helpers/'.$helper.'Helper.php');

    $helperClass = new applicationHelper();
    foreach (get_class_methods($helperClass) as $method) {
        $$method = function($text) use($helperClass, $method) {
            $helperClass->$method($text);
        };
    }
}