(PHP 4, PHP 5)
call_user_func — Llamar a una función de usuario dada por el primer parámetro
Llamar a una funcion definida por el usuario dada por el parámetro function.
La función a ser llamada. Los métodos de clases también se pueden invocar estáticamente usando esta función pasando array($nombreclase, $nombremétodo) a este parámetro. Además, los métodos de clases de una instancia de un objeto pueden ser llamados pasando array($instanciaonjeto, $nombremétodo) a este parámetro.
Cero o más parámetros a pasar a la función.
Note:
Observe que los parámetros para call_user_func() no son pasados por referencia.
Example #1 Ejemplo de call_user_func() y referencias
<?php
error_reporting(E_ALL);
function incrementar(&$var)
{
$var++;
}
$a = 0;
call_user_func('incrementar', $a);
echo $a."\n";
call_user_func_array('incrementar', array(&$a)); // En su lugar se puede usar esto antes de PHP 5.3
echo $a."\n";
?>El resultado del ejemplo sería:
0 1
Devuelve el resultado de la función, o FALSE en caso de error.
Versión | Descripción |
---|---|
5.3.0 | La interpretación de palabras clave orientadas a objetos como parent y self ha cambiado. Anteriormente al llamarlas usando la sintaxis de dobles dos puntos emitiría una advertencia E_STRICT porque eran interpretadas como estáticas. |
Example #2 Ejemplo de call_user_func()
<?php
function barbero($tipo)
{
echo "Usted quiere un corte de pelo al estilo $tipo, sin problemas\n";
}
call_user_func('barbero', "seta");
call_user_func('barbero', "rapado");
?>
El resultado del ejemplo sería:
Usted quiere un corte de pelo al estilo seta, sin problemas Usted quiere un corte de pelo al estilo rapado, sin problemas
Example #3 call_user_func() usando un nombre de espacios de nombres
<?php
namespace Foobar;
class Foo {
static public function prueba() {
print "¡Hola mundo!\n";
}
}
call_user_func(__NAMESPACE__ .'\Foo::prueba'); // A partir de PHP 5.3.0
call_user_func(array(__NAMESPACE__ .'\Foo', 'prueba')); // A partir de PHP 5.3.0
?>
El resultado del ejemplo sería:
¡Hola mundo! ¡Hola mundo!
Example #4 Usar un método de clase con call_user_func()
<?php
class miclase {
static function saludar()
{
echo "¡Hola!\n";
}
}
$nombreclase = "miclase";
call_user_func(array($nombreclase, 'saludar'));
call_user_func($nombreclase .'::saludar'); // A partir de 5.2.3
$miobjeto = new miclase();
call_user_func(array($miobjeto, 'saludar'));
?>
El resultado del ejemplo sería:
¡Hola! ¡Hola! ¡Hola!
Example #5 Usar una función lambda con call_user_func()
<?php
call_user_func(function($arg) { print "[$arg]\n"; }, 'prueba'); /* A partir de PHP 5.3.0 */
?>
El resultado del ejemplo sería:
[prueba]
Note:
Las funciones de retorno de llamada que se registran con funciones como call_user_func() y call_user_func_array() no se llamarán si se produce una excepción en la función de retorno previa.