如何将变量传递给create_function()?
我有这样的事情:
function my_hook_function(){
$var = 10;
apply_filters('hook', $var);
return $var;
}
$variable = 5;
$function = create_function('', 'return $variable;');
add_filter('hook', $function);
echo my_hook_function();
但它不起作用:( 从理论上讲,输出应为5
add_filter()是一个wordpress功能,允许你改变周围的东西:)
答案 0 :(得分:3)
阅读create_function手册,将$variable
传递给该函数的用法如下:
$variable = 3434;
$function = create_function('$v', 'return $v;');
echo $function($variable);
修改强>
在$variable
调用中更改了create_function
,以使其更清楚正确使用并避免混淆。
<强>更新强>
鉴于下面的评论,这是一个更新版本:
$variable = 3434;
$function = create_function('$v', 'return $v;');
function myTest($function, $var) {
echo $function($var);
}
myTest($function, $variable); // should echo 3434
不确定这是否是您想要的,在您展示您正在使用的实际情况之前,我将不再进一步猜测。
更新2
进行一些研究,是否有理由不以这种方式使用它:
add_filter('something', create_function('$v', 'return $v;'));
从我能找到的应该有效......
答案 1 :(得分:3)
$outsideVarName = 3434;
$function = create_function('$insideFunctionVarName', 'return $insideFunctionVarName;');
echo $function($outsideVarName);
答案 2 :(得分:3)
这里有两个问题。第一个是你需要告诉php哪些参数传递给'created'函数,或者将它们作为全局内部引用。第二个是你期望$ var被创建的函数修改,但你没有传递它作为引用。创建的函数只返回新变量,而您不做任何操作。
function my_hook_function(){
$var = 10;
$var = apply_filters('hook', $var);
return $var;
}
/* This will return 5 by dividing the passed value by 2 and returning the result */
$function = create_function('$variable', 'return $variable/2;');
add_filter('hook', $function);
echo my_hook_function();
/* This will return 5 by referencing the global $variable */
$variable = 5;
$function = create_function('', 'global $variable; return $variable;');
add_filter('hook', $function);
echo my_hook_function();
请注意,如果您完全按照这样运行此代码,则过滤器的两个将被添加到“hook”钩子中。
答案 3 :(得分:1)
我认为你真正想要的是
$function = create_function('', "return $variable;");
或
$function = create_function('', 'return ' . $variable . ';');
即。您希望在创建时将变量的值捕获到函数中。由于转换为字符串的数字与其源表示相同,因此只需将其插入到函数的源中就足够了。对于字符串和数组,一些引用是必要的。