Подтвердить что ты не робот

Используйте переменную для определения функции PHP

Я хотел бы динамически назвать несколько функций с помощью переменных, например:

$thing = 'some_function';

function $thing() {
    echo 'hi!';
}

Я знаю, что могу вызвать функцию, используя такую ​​переменную:

$something = 'function_exists';

if( $something('print_r') ) {
    echo 'Yep';
}

Но верхний пример не работает для меня.

Любые идеи?

Я использую систему с модулями. Каждый модуль представляет собой один php script, который можно добавить или удалить из определенной папки.

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

Я использую существующую систему и не могу переписать обработку модуля.

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

4b9b3361

Ответ 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();

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