2015-06-23 3 views
-1

У меня есть функция, называемая тестом, который вызывается, и просто эхо-тест, сохраняющий его простым, для этого вопроса.php вызов функции с помощью строки

test(); 

function test() { 
    echo "do something"; 
} 

Однако я хочу попытаться сделать динамическую функцию, если это правильный выбор слов.

У меня есть список записей в базе данных, и на основе каждой записи может потребоваться другая функция для обработки этой записи, тогда идея состоит в том, чтобы иметь поле в базе данных, которое было бы именем функции, затем я использую это поле для некоторых способов вызова этой функции.

Как это

test(); 

$function_name = "test"; 
function $function_name() { 
    echo "do something here"; 
} 

единственным способом я могу думать, чтобы обойти это использовать переключатель/случай, но это будет вызывать у меня другие проблемы вниз линии.

+0

Http: //php.net/manual/en/functions.variable-functions.php –

+0

Зачем вам это нужно? –

+0

см. Http://stackoverflow.com/q/7213825/ и http://stackoverflow.com/q/1005857/ - http://php.net/manual/en/functions.variable-functions.php и http: //php.net/manual/en/function.call-user-func.php, которые находятся внутри этих Q's & A. Один из них, вероятно, является дубликатом. –

ответ

2

Функция должна быть определена с определенным именем, но вы можете вызвать его, используя переменную, которая содержит его имя, как так: -

<?php 
function name() { 
    echo "name"; 
} 

$func_name = 'name'; 

// its always a good idea to check that function 
// actually exists before calling it. 
if (function_exists($func_name)) { 
    $func_name(); 
} 
+0

спасибо :) :) – Skydiver1977

0

используют замыкания для этого:

<?php 

$funcName = 'test'; 

$$funcName = function() 
{ 
    echo 'Do something'; 
}; 

$test(); // 'Do something' 
$$funcName(); // 'Do something' 
+0

привет, как это отличается от ответа RiggsFolly? – Skydiver1977

+0

@ Skydiver1977 Главное отличие в том, что функция. Инициализируется динамическим именем, а не просто называется таким образом. После этого они оба почти одинаковы как альтернатива –

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