Método __invoke
O método mágico __invoke permite que uma instância de uma classe seja chamada como uma função.
Quando um objeto é chamado como uma função, o PHP chama automaticamente este método.
O método pode receber parâmetros e retornar um valor, como uma função comum.
Sintaxe
class MyClass {
public function __invoke(...$args) {
// implementação
}
}
Exemplo
Vamos criar uma classe com o método __invoke e chamar o objeto como uma função:
<?php
class Greeter {
public function __invoke($name) {
return "Hello, $name!";
}
}
$greet = new Greeter();
echo $greet('John');
?>
Resultado da execução do código:
'Hello, John!'
Exemplo
Usando __invoke com múltiplos parâmetros:
<?php
class Calculator {
public function __invoke($a, $b) {
return $a + $b;
}
}
$calc = new Calculator();
echo $calc(5, 3);
?>
Resultado da execução do código:
8
Exemplo
Verificando se um objeto é chamável usando is_callable:
<?php
class Test {}
$obj1 = new Test();
$obj2 = new class { public function __invoke() {} };
var_dump(is_callable($obj1));
var_dump(is_callable($obj2));
?>
Resultado da execução do código:
false
true
Veja também
-
método
__construct,
que é o construtor da classe -
método
__toString,
que permite que um objeto seja representado como uma string