我将创建一个动态函数。我创建了它,但是现在我想在此函数中动态设置默认值:
$functionName = "obj_".$type.$action;
$function = "obj".$action;
$GLOBALS[$functionName] = function() {
$function($type);
};
我想在对函数进行générating之后得到这个结果:
$functionName = "obj_article_add";
$function = "obj_add";
$obj_article_add = function() {
obj_article_add("article");
};
答案 0 :(得分:1)
如果我理解正确,则您正在尝试执行以下操作:
function create_action_for($action, $type)
{
$function_name = 'obj_' . $action;
return function () use ($function_name, $type) {
$function_name($type);
};
}
$obj_add_article = create_action_for('add', 'article');
$obj_add_article();
这是一种更为通用的方法,该方法采用一个函数名称和一个默认值,并返回一个传递该值作为其第一个参数的函数,同时允许后续参数使用:
function create_action_for($function_name, $first_param_value)
{
return function (...$args) use ($function_name, $first_param_value) {
return $function_name($first_param_value, ...$args);
};
}
function obj_add($type, $param1, $param2)
{
echo 'adding ', $type, ' with ', $param1, ' and ', $param2;
}
$obj_add_article = create_action_for('obj_add', 'article');
$obj_add_article('something', 'stuff');