Метод __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,
който позволява на обекта да бъде представен като низ