从eval()生成lambda函数

时间:2011-01-31 11:14:38

标签: php eval php-5.3

我有很少的助手 - 我想将每个助手的方法重新声明为lambda匿名函数。

我正在尝试通过获取帮助器方法,然后执行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);
                    }");

                }
             }

由于效率恐惧 - 如果您知道,我想要更好的解决方案,谢谢! 谢谢伙计们!

2 个答案:

答案 0 :(得分:2)

这应该有效:

foreach($methods as $method )
{
    $$method = function($text) use ($method, $helperClass) {
        return $helperClass->$method($text);
    }
}

但仍然不知道你为什么这样做。

修改 需要PHP 5.3.x - >看这里Anonymous funcions

答案 1 :(得分:0)

{{2p>那摆脱了慢{{1p>