Metoden __invoke
Den magiska metoden __invoke gör att en instans av en klass kan anropas som en funktion.
När ett objekt anropas som en funktion, så anropar PHP automatiskt denna metod.
Metoden kan ta parametrar och returnera ett värde, precis som en vanlig funktion.
Syntax
class MyClass {
public function __invoke(...$args) {
// implementering
}
}
Exempel
Låt oss skapa en klass med metoden __invoke och anropa objektet som en funktion:
<?php
class Greeter {
public function __invoke($name) {
return "Hello, $name!";
}
}
$greet = new Greeter();
echo $greet('John');
?>
Resultat av kodkörning:
'Hello, John!'
Exempel
Användning av __invoke med flera parametrar:
<?php
class Calculator {
public function __invoke($a, $b) {
return $a + $b;
}
}
$calc = new Calculator();
echo $calc(5, 3);
?>
Resultat av kodkörning:
8
Exempel
Kontrollera om ett objekt är anropsbart med hjälp av is_callable:
<?php
class Test {}
$obj1 = new Test();
$obj2 = new class { public function __invoke() {} };
var_dump(is_callable($obj1));
var_dump(is_callable($obj2));
?>
Resultat av kodkörning:
false
true
Se även
-
metoden
__construct,
som är klassens konstruktor -
metoden
__toString,
som gör att objektet kan representeras som en sträng