2016-09-11 4 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, но они доступны только как индексированный массив. Мне это нужно как переменная.

Или даже будучи в состоянии добавить «использование» для закрытия перед вызовом он будет работать ...

EDIT:

Далее пример, как популярные рамки 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

в вашем примере, вы не видите никакого нового синтаксиса. Это просто функция как параметр (в данном случае обратный вызов) –

 Смежные вопросы

  • Нет связанных вопросов^_^