Имя функции PHP на лету - PullRequest
       28

Имя функции PHP на лету

1 голос
/ 14 сентября 2009

У меня довольно глупый вопрос PHP: D! Я хотел бы упростить следующее утверждение:

function hello_input() {
    return 'Hello World';
}

$helper = 'hello';

$helper = $helper . '_input';

$data = $helperinput();

Особая часть, которую я хочу упростить, - это добавление _input к $ helper, чтобы он вызывал нужную функцию.

Я думал о чем-то подобном, но это не работает:

$data = $helper. 'input'();
or
$data = $helper. 'input' . ();

Есть идеи?

Спасибо, Max

Ответы [ 4 ]

13 голосов
/ 14 сентября 2009

Использование call_user_func, например $data = call_user_func($helper.'input');.

0 голосов
/ 14 сентября 2009

Ожидаете ли вы вызывать код на основе ввода? Вы никогда не должны пытаться сделать это. Это дает людям возможность выполнить произвольный код. Даже если вы не можете понять, как это сделать, это все же потенциальный метод атаки.

Что вам, вероятно, нужно - это оператор switch (или операторы цепочки if), которые соответствуют входу и отправляют правильную функцию.

0 голосов
/ 14 сентября 2009
$helper = 'hello_';
$data = $helper.'input';
call_user_func($data);

Это должно помочь вам в этом. Удачи!

Документы здесь

0 голосов
/ 14 сентября 2009

Сначала получить полное имя функции в строке.

$helper = 'hello';
$func = $helper . '_input';
$data = $func();

PHP вызывает это функции переменных . См. Также переменные переменные .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...