php is_function (), чтобы определить, является ли переменная функцией

Я был довольно счастлив читать об анонимных функциях в php, которые позволяют Вам объявить переменную, которая является функцией, легче, чем Вы могли сделать с create_function. Теперь я задаюсь вопросом, есть ли у меня функция, которая передается переменная, как я могу проверить его, чтобы определить, является ли это функция? Еще нет никакого is_function () функции, и когда я делаю var_dump переменной, которая является функцией::

$func = function(){
    echo 'asdf';
};
var_dump($func);

Я получаю это:

object(Closure)#8 (0) { } 

Какие-либо мысли о том, как проверить, является ли это функцией?

81
задан Jage 14 May 2010 в 16:03
поделиться

2 ответа

Используйте is_callable , чтобы определить, является ли данная переменная функцией. Например:

$func = function()
{  
    echo 'asdf';  
};

if( is_callable( $func ) )
{
    // Will be true.
}
131
ответ дан 24 November 2019 в 09:33
поделиться

Вы можете использовать function_exists для проверки наличия функции с заданным именем. А чтобы совместить это с анонимными функциями, попробуйте следующее:

function is_function($f) {
    return (is_string($f) && function_exists($f)) || (is_object($f) && ($f instanceof Closure));
}
32
ответ дан 24 November 2019 в 09:33
поделиться
Другие вопросы по тегам:

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