Имя функции внутри переменной - PullRequest
0 голосов
/ 04 мая 2010

У меня простой вопрос (наверное). Я получаю имя функции внутри переменной из базы данных. После этого я хочу запустить определенную функцию. Как я могу повторить имя функции внутри файла php? Код выглядит примерно так:

$variable= get_specific_option;
//execute function
$variable_somesuffix();

"Somesuffix" будет простым текстом. Я перепробовал все, что имел в виду, но ничего не получалось.

Ответы [ 4 ]

3 голосов
/ 04 мая 2010

Вы хотите call_user_func

 function hello($name="world")
 {
     echo "hello $name";
 }

$func = "hello";

//execute function
call_user_func($func);
> hello world

call_user_func($func, "byron");
> hello byron
2 голосов
/ 04 мая 2010

Вы хотите переменные переменные .

Вот пример кода, который покажет вам, как он работает, и ошибки:

function get_specific_option() {
    return 'fakeFunctionName';
}

$variable = get_specific_option();

$variable();
// Fatal error: Call to undefined function fakeFunctionName()

$test = $variable . '_somesuffix';

$test();
// Fatal error: Call to undefined function fakeFunctionName_somesuffix()
2 голосов
/ 04 мая 2010

Есть два способа сделать это. Предполагая, что:

function foo_1() {
  echo "foo 1\n";
}

Вы можете использовать call_user_func():

$var = 'foo';
call_user_func($foo . '_1');

или сделайте это:

$var = 'foo';
$func = $var . '_1';
$func();

К сожалению, вы не можете выполнить последнее напрямую (т. Е. ($var . '_1')(); - синтаксическая ошибка).

0 голосов
/ 04 мая 2010

Вы также можете сделать sprintf ($ string).

...