is_callable

is_callable

(PHP 4 >= 4.0.6, PHP 5)

is_callable --  Verifica que los contenidos de una variable puedan ser llamados como una funci贸n

Descripci贸n

bool is_callable ( mixed var [, bool solo_sintaxis [, string &nombre_a_llamar]] )

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 una matriz contenga un objeto adecuadamente codificado y un nombre de funci贸n.

El par谩metro var puede ser o bien el nombre de una funci贸n almacenada en una variable tipo cadena, o un objeto y el nombre de un m茅todo dentro del objeto, de este modo:
array($AlgunObjeto, 'NombreDelMetodo')

Si el argumento solo_sintaxis es TRUE la funci贸n solo verifica que var pueda ser una funci贸n o un m茅todo. Solo rechazar谩 variables simples que no sean cadenas, o una matriz que no tenga una estructura v谩lida para ser usada 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.

El argumento nombre_a_llamar recibe el "nombre que puede ser llamado". En el ejemplo siguiente este es "algunaClase:algunMetodo". Note, 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.

<?php
//  Como chequear una variable para ver si puede ser llamada
//  como una funcion.

//
//  Variable simple que contiene una funcion
//

function algunaFuncion()
{
}

$variableFuncion = 'algunaFuncion';

var_dump(is_callable($variableFuncion, false, $nombre_a_llamar));  // bool(true)

echo $nombre_a_llamar, "\n";  // algunaFuncion

//
//  Matriz que contiene un metodo
//

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

?>

Vea tambi茅n function_exists() y method_exists().