Я хотел бы динамически назвать несколько функций с помощью переменных, например:
$thing = 'some_function'; function $thing() { echo 'hi!'; }
Я знаю, что могу вызвать функцию, используя переменную вроде этого:
$something = 'function_exists'; if( $something('print_r') ) { echo 'Yep'; }
Но лучший пример для меня не работает.
Есть идеи?
Я использую систему с модулями. Каждый модуль представляет собой один php-скрипт, который можно добавить или удалить из определенной папки.
Каждый модуль нуждается в новой функции для его инициализации. Я глобал для имен файлов, затем я хочу создать цикл и создать ряд функций, по одному для каждого модуля.
Я использую существующую систему и не могу переписать обработку модуля.
Альтернативой было бы просто написать все функции инициализации и жестко закодировать их, но по мере того, как список растет, так и код – и если модуль отнимается, то возникают ошибки.
Что вы можете сделать, это
$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();
При этом определение функций с динамическими именами – плохая идея. Вместо этого создайте массив функций, которые вы вызываете, или используйте полиморфизм.