<?php
// Un ejemplo de función de retrollamada
function my_callback_function() {
echo 'hello world!', PHP_EOL;
}
// Un ejemplo de método de retrollamada
class MyClass {
static function myCallbackMethod() {
echo 'Hello World!', PHP_EOL;
}
}
// Tipo 1 : Función de retrollamada simple
call_user_func('my_callback_function');
// Tipo 2 : Llamada a un método estático de clase
call_user_func(array('MyClass', 'myCallbackMethod'));
// Tipo 3 : Llamada a un método de objeto
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));
// Tipo 4 : Llamada a un método estático de clase
call_user_func('MyClass::myCallbackMethod');
// Tipo 5 : Llamada a un método estático de clase relativo
class A {
public static function who() {
echo "A", PHP_EOL;
}
}
class B extends A {
public static function who() {
echo "B", PHP_EOL;
}
}
call_user_func(array('B', 'parent::who')); // A, obsoleto a partir de PHP 8.2.0
// Tipo 6 : Los objetos que implementan __invoke pueden ser utilizados como callables
class C {
public function __invoke($name) {
echo 'Hello ', $name, PHP_EOL;
}
}
$c = new C();
call_user_func($c, 'PHP!');
?>