2016-09-11 96 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

,你沒有看到任何新的語法。它只是一個作爲參數的函數(在這種情況下是回調函數) –