Método __invoke
El método mágico __invoke permite que una instancia de clase sea invocada como una función.
Cuando un objeto se invoca como una función, PHP llama automáticamente a este método.
El método puede aceptar parámetros y devolver un valor, como una función normal.
Sintaxis
class MyClass {
public function __invoke(...$args) {
// implementación
}
}
Ejemplo
Creemos una clase con el método __invoke e invoquemos el objeto como una función:
<?php
class Greeter {
public function __invoke($name) {
return "Hello, $name!";
}
}
$greet = new Greeter();
echo $greet('John');
?>
Resultado de la ejecución del código:
'Hello, John!'
Ejemplo
Uso de __invoke con múltiples parámetros:
<?php
class Calculator {
public function __invoke($a, $b) {
return $a + $b;
}
}
$calc = new Calculator();
echo $calc(5, 3);
?>
Resultado de la ejecución del código:
8
Ejemplo
Comprobando si un objeto es invocable 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 de la ejecución del código:
false
true
Ver también
-
método
__construct,
que es el constructor de la clase -
método
__toString,
que permite representar el objeto como una cadena