is_callable($callback, false, $callableName)
$callback è una stringa contenente il nome della funzione o un array che ha in posizione 0 il nome della classe (per metodi statici) o un oggetto e il posizione 1 il nome del metodo
Il false indica che deve esistere la funzione/metodo. Se true controlla solo che il nome sia sintatticamente corretto per una funzione/metodo.
$callableName viene riempita con il nome 'completo' con cui testa la funzione. Per un metodo si ha sempre nome della classe::metodo (indipendentemente dal fatto che sia statico o meno), mentre per le funzioni si ha il nome della funzione.
Un esempio PHP 5.4
Codice PHP:
<?php
class foo{
static function Pippo(){}
public function Paperino(){}
}
function Topolino(){}
$obj = new foo();
$val = is_callable([$obj,'Pippo'],false,$callableName)?'Si':'No';
echo "E' chiamabile $callableName? $val
";
$val = is_callable(['foo','Pippo'],false,$callableName)?'Si':'No';
echo "E' chiamabile $callableName? $val
";
$val = is_callable('Pippo',false,$callableName)?'Si':'No';
echo "E' chiamabile $callableName? $val
";
$val = is_callable([$obj,'Paperino'],false,$callableName)?'Si':'No';
echo "E' chiamabile $callableName? $val
";
$val = is_callable(['foo','Paperino'],false,$callableName)?'Si':'No';
echo "E' chiamabile $callableName? $val
";
$val = is_callable('Paperino',false,$callableName)?'Si':'No';
echo "E' chiamabile $callableName? $val
";
$val = is_callable(['fooA','Gastone'],false,$callableName)?'Si':'No';
echo "E' chiamabile $callableName? $val
";
$val = is_callable('Gastone',false,$callableName)?'Si':'No';
echo "E' chiamabile $callableName? $val
";
$val = is_callable('Topolino',false,$callableName)?'Si':'No';
echo "E' chiamabile $callableName? $val
";
$val = is_callable(['class','Gastone'],false,$callableName)?'Si':'No';
echo "E' chiamabile $callableName? $val
";
$val = is_callable(['class','Gastone'],true,$callableName)?'Si':'No';
echo "E' sintatticamente corretto $callableName? $val
";
$val = is_callable('Gastone',true,$callableName)?'Si':'No';
echo "E' sintatticamente corretto $callableName? $val
";
?>
Produce
codice:
E' chiamabile foo::Pippo? Si
E' chiamabile foo::Pippo? Si
E' chiamabile Pippo? No
E' chiamabile foo::Paperino? Si
E' chiamabile foo::Paperino? Si
E' chiamabile Paperino? No
E' chiamabile fooA::Gastone? No
E' chiamabile Gastone? No
E' chiamabile Topolino? Si
E' chiamabile class::Gastone? No
E' sintatticamente corretto class::Gastone? Si
E' sintatticamente corretto Gastone? Si