我如何转换另一个create_function。下面这个
return create_function('$f,$e=null', "return ($parsed_tpl);");
到
$e=null; return function($f,$e) { return ($parsed_tpl); };
或
return function($f,$e=null;) { return ($parsed_tpl); };
但两个都不管用。以上我都试过了。
tktrz96b1#
原始代码中需要注意的关键部分是:
"return ($parsed_tpl);"
注意双引号,表示在将变量传递给create_function之前,变量将在字符串 * 中展开,然后 expanded 形式将形成函数的主体。换句话说,每次创建的函数的实际代码都完全不同--它不仅会 * 返回 * 字符串,还会 * 将其作为PHP代码执行 *。要在当前PHP中实现相同的效果,需要使用eval函数:
create_function
return eval("return ($parsed_tpl);");
你的尝试也犯了两个错误:
$e=null
use
$parsed_tpl
格式如下:
$my_anonymous_function = function($some_param, $next_param='default value', $another='another default') use ($something_captured, $something_else) { /* body of function using those 5 variables*/ };
1条答案
按热度按时间tktrz96b1#
原始代码中需要注意的关键部分是:
注意双引号,表示在将变量传递给
create_function
之前,变量将在字符串 * 中展开,然后 expanded 形式将形成函数的主体。换句话说,每次创建的函数的实际代码都完全不同--它不仅会 * 返回 * 字符串,还会 * 将其作为PHP代码执行 *。
要在当前PHP中实现相同的效果,需要使用eval函数:
你的尝试也犯了两个错误:
$e=null
不是赋值,它是参数的默认值;它不需要分号use
关键字“捕获”$parsed_tpl
变量,才能在函数中使用它格式如下: