php is_function() to determine if a variable is a function php is_function() to determine if a variable is a function php php

php is_function() to determine if a variable is a function


Use is_callable to determine whether a given variable is a function. For example:

$func = function(){      echo 'asdf';  };if( is_callable( $func ) ){    // Will be true.}


You can use function_exists to check there is a function with the given name. And to combine that with anonymous functions, try this:

function is_function($f) {    return (is_string($f) && function_exists($f)) || (is_object($f) && ($f instanceof Closure));}


If you only want to check whether a variable is an anonymous function, and not a callable string or array, use instanceof.

$func = function(){      echo 'asdf';  };if($func instanceof Closure){    // Will be true.}

Anonymous functions (of the kind that were added in PHP 5.3) are always instances of the Closure class, and every instance of the Closure class is an anonymous function.

There's another type of thing in PHP that could arguably be considered a function, and that's objects that implement the __invoke magic method. If you want to include those (while still excluding strings and arrays), use method_exists($func, '__invoke'). This will still include closures, since closures implement __invoke for consistency.