【发布时间】:2015-08-02 05:02:23
【问题描述】:
我正在使用 PHP 5.3,来自 JS 和 Python 领域,不能使用 call() 因为
假设我有一个函数生成器,例如在 JS 土地上记录东西:
function console($meth){
return function() use($meth) {
print "<script>console.".$meth.".apply(console,".json_encode(func_get_args()).")</script>";
};
}
我想动态评估这个,比如:
console($meth)($thing1,$thing2);
但是
//console('log')('hello'); //syntax error!
悲伤的泪水!但是,这行得通。
$func = console('log');
$func('hello');
为什么会这样?为什么为什么为什么?
另外,如何在不使用 eval 或分配给变量的情况下强制 console('log') 进行评估?
【问题讨论】:
-
5.3 不支持函数解引用。
-
这只是 PHP 解析器的一个限制,它不允许您在需要函数名的地方使用函数调用。在 5.4 之前,您也不能将函数调用用作数组,例如
func(arg)[1]不起作用。
标签: php function metaprogramming