(PHP 4 >= 4.0.6, PHP 5, PHP 7)
is_callable — Verificar que los contenidos de una variable puedan ser llamados como una función
Verifica que los contenidos de una variable puedan ser llamados como una función. Esto permite revisar que los contenidos de una variable contengan el nombre de una función válida, o que un array contenga un objeto adecuadamente codificado y un nombre de función.
var
El valor a revisar
solo_sintaxis
Si es TRUE
la función solo verifica que
nombre
pueda ser una función o un método. Solo rechazará
variables simples que no sean cadenas, o un array que no tenga una estructura
válida para ser usado como llamada de retorno. Se espera que las matrices válidas
tengan solo 2 entradas, la primera de las cuales es un objeto o una cadena, y la segunda una cadena.
callable_name
Recibe el "nombre que puede ser llamado". En el ejemplo siguiente aquél es "algunaClase:algunMetodo". Tenga en cuenta, sin embargo, que a pesar de la implicación de que algunaClase::algunMetodo() es un método estático que puede ser llamado, este no es el caso.
Devuelve TRUE
si var
puede ser llamado, FALSE
de lo contrario.
Ejemplo #1 Ejemplo de is_callable()
<?php
// Cómo chequear una variable para ver si puede ser llamada
// como una función.
//
// Variable simple que contiene una función
//
function algunaFuncion()
{
}
$variableFuncion = 'algunaFuncion';
var_dump(is_callable($variableFuncion, false, $nombre_a_llamar)); // bool(true)
echo $nombre_a_llamar, "\n"; // algunaFuncion
//
// Array que contiene un método
//
class algunaClase {
function algunMetodo()
{
}
}
$unObjeto = new algunaClase();
$variableMetodo = array($unObjeto, 'algunMetodo');
var_dump(is_callable($variableMetodo, true, $nombre_a_llamar)); // bool(true)
echo $nombre_a_llamar, "\n"; // algunaClase::algunMetodo
?>
Ejemplo #2 Función is_callable() y constructores
A partir de PHP 5.3.0 la función is_callable() reporta constructores como que no se pueden llamar. Esto afecta el estilo de los constructores de PHP 5 (__construct) así también el estilo de los constructors de PHP 4 (por ejemplo metodos con el mismo nombre de la clase). Anteriormente, ambos casos han sido considerados como llamables.
<?php
class Foo
{
public function __construct() {}
public function foo() {}
}
var_dump(
is_callable(array('Foo', '__construct')),
is_callable(array('Foo', 'foo'))
);
El resultado del ejemplo sería:
bool(false) bool(false)