95 votes

php is_function () pour déterminer si une variable est une fonction

J'étais assez excité à lire sur les fonctions anonymes en php, qui permet de déclarer une variable qui est fonction de plus facile que vous pourriez le faire avec create_function. Maintenant je me demande si j'ai une fonction qui est passé à une variable, comment puis-je vérifier pour déterminer si c'est une fonction? Il n'y a pas de is_function() encore une fonction, et lorsque je fais un var_dump d'une variable qui est fonction::

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

J'obtiens ceci:

object(Closure)#8 (0) { } 

Des idées sur la façon de vérifier si c'est une fonction?

152voto

Jon Benedicto Points 7020

Utilisez is_callable pour déterminer si une variable donnée est une fonction. Par exemple:

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

if( is_callable( $func ) )
{
    // Will be true.
}
 

35voto

Gumbo Points 279147

Vous pouvez utiliser function_exists pour vérifier s’il existe une fonction portant le nom donné. Et pour combiner cela avec des fonctions anonymes, essayez ceci:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X