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

时间:2019-01-16 22:54:38

标签: php

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

  $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");
  };

1 个答案:

答案 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();

此处演示:https://3v4l.org/48jbd

更通用的方法(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');

此处演示:https://3v4l.org/kmTpC