(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
is_callable — Détermine si une valeur peut être appelé comme une fonction dans la portée courante.
Vérifie qu'une variable est un callable.
valueLa valeur à vérifier.
syntax_only
       Si l'argument syntax_only vaut true, la
       fonction ne va vérifier que si value peut être
       une fonction ou une méthode. Il va simplement rejeter les variables
       qui ne sont pas des chaînes, ou des tableaux qui n'ont pas la bonne
       structure pour être utilisés comme fonction de rappel. Les tableaux
       valides sont supposés n'avoir que deux entrées, le premier étant un
       objet ou une chaîne, et le second une chaîne.
      
callable_name
       L'argument callable_name reçoit le nom
       à utiliser. Dans l'exemple ci-dessous, il vaut
       "someClass::someMethod". Notez que, bien que
       someClass::someMethod() puisse être appelée sous forme
       statique, ce n'est pas le cas.
      
   Retourne true si value peut être appelé comme
   une fonction, false sinon.
  
Exemple #1 Exemple avec is_callable()
<?php
//  Comment vérifier qu'une variable peut être appelée
//  comme fonction ?
//
//  Variable simple contenant une fonction
//
function someFunction()
{
}
$functionVariable = 'someFunction';
var_dump(is_callable($functionVariable, false, $callable_name));  // bool(true)
echo $callable_name, "\n";  // someFunction
//
//  Tableau contenant une méthode
//
class someClass {
  function someMethod() 
  {
  }
}
$anObject = new someClass();
$methodVariable = array($anObject, 'someMethod');
var_dump(is_callable($methodVariable, true, $callable_name));  //  bool(true)
echo $callable_name, "\n";  //  someClass::someMethod
?>
Exemple #2 is_callable() et les constructeurs
is_callable() rapporte les constructeurs comme n'étant pas appelable.
<?php
class Foo
{
    public function __construct() {}
    public function foo() {}
}
var_dump(
    is_callable(array('Foo', '__construct')),
    is_callable(array('Foo', 'foo'))
);
L'exemple ci-dessus va afficher :
bool(false) bool(false)
true pour n'importe quelle méthode sur cet object, même si
    la méthode n'est pas définie.