将代码注入匿名函数

时间:2016-09-11 17:38:03

标签: php closures anonymous-function

是否可以在使用call_user_func调用它之前将一行代码注入匿名函数体?

例如,假设我想注入这个:

$some_var = 1;

成:

function foo()
{
    echo $some_var;
}

成为:

function foo()
{
    $some_var = 1;
    echo $some_var;
}

我知道您可以将参数传递给call_user_func,但这些参数仅作为索引数组提供。我需要它作为变量。

甚至可以添加"使用"在调用它之前关闭它会起作用......

编辑:

进一步的例子,流行的PHP框架如何设法做到这一点:

Route::group(['domain' => '{subdomain}.domain.com'], function()
{
    echo $subdomain;
});

他们神奇地调用这个匿名函数并注入$ subdomain

1 个答案:

答案 0 :(得分:0)

你不能,你永远不应该这样做。将有更好的方法来实现您的目标。为了回答一些实际的帮助,我建议你这样做:

function foo($extraAction)
{
    switch ($extraAction){
       case "action1":
           $some_var = 1;
           break;

        case "action2":
           //another action
           break;

        default:
            //do something by default

     }
    echo $some_var;
}

这是你最接近的。