Php 从eval()生成lambda函数
我有几个助手——我想将每个助手的方法重新声明为lambda匿名函数 我试图通过获取helpers方法,然后执行eval函数来实现它,但是它不起作用,我得到了解析错误 我当前的代码: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
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);
};
}
}