Metoda __invoke
Magická metoda __invoke umožňuje instanci třídy být volána jako funkce.
Když je objekt volán jako funkce, PHP automaticky zavolá tuto metodu.
Metoda může přijímat parametry a vracet hodnotu, jako obyčejná funkce.
Syntaxe
class MyClass {
public function __invoke(...$args) {
// implementace
}
}
Příklad
Vytvoříme třídu s metodou __invoke a zavoláme objekt jako funkci:
<?php
class Greeter {
public function __invoke($name) {
return "Hello, $name!";
}
}
$greet = new Greeter();
echo $greet('John');
?>
Výsledek provedení kódu:
'Hello, John!'
Příklad
Použití __invoke s několika parametry:
<?php
class Calculator {
public function __invoke($a, $b) {
return $a + $b;
}
}
$calc = new Calculator();
echo $calc(5, 3);
?>
Výsledek provedení kódu:
8
Příklad
Kontrola, zda je objekt volatelný 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));
?>
Výsledek provedení kódu:
false
true
Viz také
-
metoda
__construct,
která je konstruktorem třídy -
metoda
__toString,
která umožňuje objektu být reprezentován jako řetězec