Metoda __invoke
Magiczna metoda __invoke pozwala instancji klasy na bycie wywołaną jak funkcja.
Gdy obiekt jest wywoływany jak funkcja, PHP automatycznie wywołuje tę metodę.
Metoda może przyjmować parametry i zwracać wartość, jak zwykła funkcja.
Składnia
class MyClass {
public function __invoke(...$args) {
// implementacja
}
}
Przykład
Stwórzmy klasę z metodą __invoke i wywołajmy obiekt jak funkcję:
<?php
class Greeter {
public function __invoke($name) {
return "Hello, $name!";
}
}
$greet = new Greeter();
echo $greet('John');
?>
Wynik wykonania kodu:
'Hello, John!'
Przykład
Użycie __invoke z wieloma parametrami:
<?php
class Calculator {
public function __invoke($a, $b) {
return $a + $b;
}
}
$calc = new Calculator();
echo $calc(5, 3);
?>
Wynik wykonania kodu:
8
Przykład
Sprawdzenie, czy obiekt jest wywoływalny za pomocą is_callable:
<?php
class Test {}
$obj1 = new Test();
$obj2 = new class { public function __invoke() {} };
var_dump(is_callable($obj1));
var_dump(is_callable($obj2));
?>
Wynik wykonania kodu:
false
true
Zobacz też
-
metoda
__construct,
która jest konstruktorem klasy -
metoda
__toString,
która pozwala obiektowi na bycie reprezentowanym jako ciąg znaków