Я был довольно счастлив читать об анонимных функциях в php, которые позволяют Вам объявить переменную, которая является функцией, легче, чем Вы могли сделать с create_function. Теперь я задаюсь вопросом, есть ли у меня функция, которая передается переменная, как я могу проверить его, чтобы определить, является ли это функция? Еще нет никакого is_function () функции, и когда я делаю var_dump переменной, которая является функцией::
$func = function(){
echo 'asdf';
};
var_dump($func);
Я получаю это:
object(Closure)#8 (0) { }
Какие-либо мысли о том, как проверить, является ли это функцией?
Используйте is_callable
, чтобы определить, является ли данная переменная функцией. Например:
$func = function()
{
echo 'asdf';
};
if( is_callable( $func ) )
{
// Will be true.
}
Вы можете использовать function_exists
для проверки наличия функции с заданным именем. А чтобы совместить это с анонимными функциями, попробуйте следующее:
function is_function($f) {
return (is_string($f) && function_exists($f)) || (is_object($f) && ($f instanceof Closure));
}