(PHP 4 >= 4.0.6, PHP 5, PHP 7)
is_callable — Détermine si l'argument peut être appelé comme fonction
Vérifie qu'une variable peut être appelée comme fonction. Cette fonction peut vérifier qu'une variable contient un nom de fonction valide, ou bien qu'elle contient un tableau, avec un objet et un nom de méthode.
var
La valeur à vérifier.
syntax_only
Si l'argument syntax_only
vaut TRUE
, la
fonction ne va vérifier que si name
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 var
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
Depuis PHP 5.3.0, is_callable() vérifie si un constructeur est appelable ou non. Ceci affecte les constructeurs style PHP 5 (__construct) mais aussi les constructeurs style PHP 4 (i.e. méthodes avec le même nom que la classe). Auparavant, les deux étaient considérés comme 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)