Метод __invoke
Магический метод __invoke
позволяет экземпляру класса быть вызванным как функция.
Когда объект вызывается как функция, PHP автоматически вызывает этот метод.
Метод может принимать параметры и возвращать значение, как обычная функция.
Синтаксис
class MyClass {
public function __invoke(...$args) {
// реализация
}
}
Пример
Создадим класс с методом __invoke
и вызовем объект как функцию:
<?php
class Greeter {
public function __invoke($name) {
return "Hello, $name!";
}
}
$greet = new Greeter();
echo $greet('John');
?>
Результат выполнения кода:
'Hello, John!'
Пример
Использование __invoke
с несколькими параметрами:
<?php
class Calculator {
public function __invoke($a, $b) {
return $a + $b;
}
}
$calc = new Calculator();
echo $calc(5, 3);
?>
Результат выполнения кода:
8
Пример
Проверка, является ли объект вызываемым с помощью is_callable
:
<?php
class Test {}
$obj1 = new Test();
$obj2 = new class { public function __invoke() {} };
var_dump(is_callable($obj1));
var_dump(is_callable($obj2));
?>
Результат выполнения кода:
false
true
Смотрите также
-
метод
__construct
,
которая является конструктором класса -
метод
__toString
,
которая позволяет объекту быть представленным в виде строки