2016-09-11 5 views
0

Ist es möglich, eine Codezeile in einen anonymen Funktionskörper zu injizieren, bevor sie mit call_user_func aufgerufen wird?PHP Code in anonyme Funktion injizieren

Zum Beispiel sage ich injizieren wollte:

$some_var = 1; 

in:

function foo() 
{ 
    echo $some_var; 
} 

werden:

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

Ich weiß, dass Sie die Parameter aber diese call_user_func passieren kann sind nur als indiziertes Array verfügbar. Ich brauche es als Variable.

Oder sogar vor dem Aufruf eine „Verwendung“ die Schließung hinzufügen zu können, dass es funktionieren würde ...

EDIT:

Ein weiteres Beispiel, wie zu tun beliebtes PHP-Frameworks verwalten, dies zu tun:

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

Sie fordern magisch diese anonyme Funktion und $ Sub-Domain Injektion

+1

Scheint du willst etwas knacken xD – MoeinPorkamel

Antwort

0

Sie können nicht, und Sie sollten nie zu tun haben. Es wird einen besseren Weg geben, um Ihr Ziel zu erreichen. Aus Gründen mit einigen tatsächlichen Hilfe zu beantworten, Sie Ich werde dies vorschlagen:

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

     case "action2": 
      //another action 
      break; 

     default: 
      //do something by default 

    } 
    echo $some_var; 
} 

Dies ist die engste Sie erhalten.

+0

Beispiel hinzugefügt, wo dies verwendet wird. –

+0

In Ihrem Beispiel sehen Sie keine neue Syntax. Es ist nur eine Funktion als Parameter (in diesem Fall ein Rückruf) –