(PHP 4, PHP 5, PHP 7)
call_user_func — Llamar a una llamada de retorno dada por el primer parámetro
Llama a la llamada de retorno dada por el primer parámetro callback
y pasa
los parámetros restantes como argumentos.
callback
La función llamable (callable) a llamar.
parameter
Cero o más parámetros a pasar a la llamda de retorno.
Nota:
Observe que los parámetros para call_user_func() no son pasados por referencia.
Ejemplo #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";
// En su lugar se puede usar esto
call_user_func_array('incrementar', array(&$a));
echo $a."\n";
?>El resultado del ejemplo sería:
0 1
Devuelve el valor devuelto por la llamada de retorno, 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.
|
Ejemplo #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
Ejemplo #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!
Ejemplo #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!
Ejemplo #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]
Nota:
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.