@Albert1991

Как в PHP вызвать функцию, передав ее аргументом в другую функцию?

Здравствуйте. Вопрос в следующем:

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

Должно быть что-то типа (но этот вариант выдает ошибку 'Call to undefined function: \func1\func1'):
namespace func1;
$func1 = function()
{
//some code
}

namespace func2;
function func2($func)
{
    $func();
}

func2(\func1\func1);


func2 в моем случае является функцией, которая пользуется другими несколькими функциями, поэтому мне нужно как-то передавать в функцию func2, какую конкретно функцию ей использовать (в примере это функция func1). При этом вот так не подходит.
function func1()
{
//some code
}

function func2($func)
{
    $func();
}

func2(func1());

Потому что я использую func1, которая выдает рандомный результат, несколько раз, а в таком случае func1 сгенерирует 1 раз рандомное значение и все, а мне нужно несколько раз запускать эту func1 в func2.
  • Вопрос задан
  • 1837 просмотров
Решения вопроса 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
$func1 - переменная, поэтому так \func1\func1 её передать нельзя, я вообще не припоминаю чтобы можно было импортировать переменные из другого пространства имен
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
xEpozZ
@xEpozZ
Веб-разработчик
Комментировать
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Комментировать
Manriel
@Manriel
PHP Developer
$funcName = 'func1';
if (is_callabe($funcName)) {
    $result = call_user_func($funcName);
} else {
    throw new \Exception('Function '. $funcName. ' do not exists.');
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы