Metodas __invoke
Magiškas metodas __invoke leidžia klasės egzemplioriui būti iškviestam kaip funkcijai.
Kai objektas iškviečiamas kaip funkcija, PHP automatiškai iškviečia šį metodą.
Metodas gali priimti parametrus ir grąžinti reikšmę, kaip įprasta funkcija.
Sintaksė
class MyClass {
public function __invoke(...$args) {
// realizacija
}
}
Pavyzdys
Sukurkime klasę su metodu __invoke ir iškviškime objektą kaip funkciją:
<?php
class Greeter {
public function __invoke($name) {
return "Hello, $name!";
}
}
$greet = new Greeter();
echo $greet('John');
?>
Kodo vykdymo rezultatas:
'Hello, John!'
Pavyzdys
__invoke naudojimas su keliais parametrais:
<?php
class Calculator {
public function __invoke($a, $b) {
return $a + $b;
}
}
$calc = new Calculator();
echo $calc(5, 3);
?>
Kodo vykdymo rezultatas:
8
Pavyzdys
Patikrinimas, ar objektas yra iškviečiamas naudojant is_callable:
<?php
class Test {}
$obj1 = new Test();
$obj2 = new class { public function __invoke() {} };
var_dump(is_callable($obj1));
var_dump(is_callable($obj2));
?>
Kodo vykdymo rezultatas:
false
true
Taip pat žiūrėkite
-
metodas
__construct,
kuri yra klasės konstruktorius -
metodas
__toString,
kuri leidžia objektui būti pateiktam kaip eilutė