Il metodo __invoke
Il metodo magico __invoke permette a un'istanza di una classe di essere chiamata come una funzione.
Quando un oggetto viene invocato come una funzione, PHP chiama automaticamente questo metodo.
Il metodo può accettare parametri e restituire un valore, proprio come una funzione normale.
Sintassi
class MyClass {
public function __invoke(...$args) {
// implementazione
}
}
Esempio
Creiamo una classe con il metodo __invoke e chiamiamo l'oggetto come una funzione:
<?php
class Greeter {
public function __invoke($name) {
return "Hello, $name!";
}
}
$greet = new Greeter();
echo $greet('John');
?>
Risultato dell'esecuzione del codice:
'Hello, John!'
Esempio
Utilizzo di __invoke con più parametri:
<?php
class Calculator {
public function __invoke($a, $b) {
return $a + $b;
}
}
$calc = new Calculator();
echo $calc(5, 3);
?>
Risultato dell'esecuzione del codice:
8
Esempio
Verifica se un oggetto è richiamabile utilizzando is_callable:
<?php
class Test {}
$obj1 = new Test();
$obj2 = new class { public function __invoke() {} };
var_dump(is_callable($obj1));
var_dump(is_callable($obj2));
?>
Risultato dell'esecuzione del codice:
false
true
Vedi anche
-
il metodo
__construct,
che è il costruttore della classe -
il metodo
__toString,
che permette all'oggetto di essere rappresentato come una stringa