<?php
/ Пример callback-функции
function my_callback_function()
{
echo "Привет, мир!", PHP_EOL;
}
/ Пример callback-метода
class MyClass
{
static function myCallbackMethod()
{
echo "Привет, мир!", PHP_EOL;
}
}
/ Тип 1: Простой вызов callback-функции
call_user_func('my_callback_function');
/ Тип 2: Вызов статического метода класса
call_user_func(array('MyClass', 'myCallbackMethod'));
/ Тип 3: Вызов метода объекта класса
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));
/ Тип 4: Вызов статического метода класса
call_user_func('MyClass::myCallbackMethod');
/ Тип 5: Вызов статического метода родственного класса
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.
/ Начиная с PHP 8.2.0 callable-выражения
/ с относительными названиями методов устарели
/ Тип 6: Объекты, классы которых реализуют магический метод __invoke(),
/ разрешается передавать как callable-объекты
class C
{
public function __invoke($name)
{
echo 'Привет, ', $name, PHP_EOL;
}
}
$c = new C();
call_user_func($c, 'PHP!');
?>