is_callable

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

is_callable Verificar que los contenidos de una variable puedan ser llamados como una función

Descripción

is_callable(mixed$var, bool$syntax_only = false, string&$callable_name = ?): bool

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.

Parámetros

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.

Valores devueltos

Devuelve true si var puede ser llamado, false de lo contrario.

Ejemplos

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)

Ver también

To Top