Php 在动态函数中设置默认变量值

Php 在动态函数中设置默认变量值,php,Php,我将创建一个动态函数。我创建了它,但现在我想在此函数中设置一个默认动态值: $functionName = "obj_".$type.$action; $function = "obj".$action; $GLOBALS[$functionName] = function() { $function($type); }; $functionName = "obj_article_add"; $function = "obj_add"; $obj_article

我将创建一个动态函数。我创建了它,但现在我想在此函数中设置一个默认动态值:

  $functionName = "obj_".$type.$action;
  $function = "obj".$action;
  $GLOBALS[$functionName] = function() {
    $function($type);
  };
$functionName = "obj_article_add";
  $function = "obj_add";
  $obj_article_add = function() {
    obj_article_add("article");
  };
在géné评级函数之后,我想要这个结果:

  $functionName = "obj_".$type.$action;
  $function = "obj".$action;
  $GLOBALS[$functionName] = function() {
    $function($type);
  };
$functionName = "obj_article_add";
  $function = "obj_add";
  $obj_article_add = function() {
    obj_article_add("article");
  };
具体做法 如果我理解正确的话,您正在尝试这样做:

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();
此处演示:

更通用的方法(PHP 7.1+) 下面是一种更为通用的方法,它采用函数名和默认值,并返回一个函数,该函数将该值作为其第一个参数传递,同时允许后续参数:

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');

这里的演示:

现在的PHP方式可能更像是
$function\u name($first\u param\u value,$args)
。@Blackhole你完全正确,只是编辑了答案。是的,这正是我想要的,非常感谢!