2016-09-11 72 views
0

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

举例来说,假设需要注入这样的:

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

他们奇迹般地被调用这个匿名函数,并注入$子域

+1

似乎你想破解一些东西xD – MoeinPorkamel

回答

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; 
} 

这是最接近你会得到。

+0

增加了使用它的例子。在你的例子中, –

+0

,你没有看到任何新的语法。它只是一个作为参数的函数(在这种情况下是回调函数) –