Используйте переменную для определения функции PHP
Я хотел бы динамически назвать несколько функций с помощью переменных, например:
$thing = 'some_function';
function $thing() {
echo 'hi!';
}
Я знаю, что могу вызвать функцию, используя такую переменную:
$something = 'function_exists';
if( $something('print_r') ) {
echo 'Yep';
}
Но верхний пример не работает для меня.
Любые идеи?
Я использую систему с модулями. Каждый модуль представляет собой один php script, который можно добавить или удалить из определенной папки.
Каждый модуль нуждается в новой функции для его инициализации. Я глобую для имен файлов, затем я хочу создать цикл и создать ряд функций, по одному для каждого модуля.
Я использую существующую систему и не могу переписать обработку модуля.
Альтернативой было бы просто написать все функции инициализации и жестко закодировать их, но по мере того, как список растет, так и код - и если модуль отбирают ошибки, то бросаются.
Ответы
Ответ 1
Что вы можете сделать, это
$thing = 'some_function';
$$thing = function() {
echo 'hi';
};
$some_function();
В php < 5.3, вам следует использовать create_function
вместо анонимной функции :
// Use this in < 5.3
$thing = 'some_function';
$$thing = create_function('',
'echo "hi";'
);
$some_function();
Говоря, определение функций с динамическими именами - плохая идея. Вместо этого создайте массив функций, которые вы вызываете, или используйте полиморфизм.