Usando __invoke() en PHP 7

El método mágico __invoke () se activa cuando se llama al objeto como una función.
El método acepta un número opcional de parámetros y puede devolver varios tipos de datos, o ningún dato, según la siguiente sinopsis:

mixed __invoke([ $… ])

Si una clase de objeto implementa el método __invoke (), podemos llamar al método especificando paréntesis () justo después del nombre del objeto. Este tipo de objeto se conoce como functor u objeto de función.

El siguiente bloque de código ilustra la implementación simple de __invoke ():

<?php
class User
{
public function __invoke($name, $age)
{
echo $name . ', ' . $age;
}
}

El método __invoke() puede activarse utilizando la instancia del objeto como una función o llamando a call_user_func(), como se muestra en el siguiente fragmento de código:

$user = new User();
$user('John', 34); // outputs: John, 34
call_user_func($user, 'John', 34); // outputs: John, 34

Usando el método __invoke(), enmascaramos nuestras clases como invocables.

var_dump(is_callable($user)); // true

Una de las ventajas de usar __invoke() es que permite crear un tipo de devolución de llamada estándar en todo el lenguage. Esto es mucho más conveniente que usar combinaciones de cadenas, objetos y matrices cuando se hace referencia a una función, método de instancia de objeto o clase método estático a través de la función call_user_func().
El método __invoke() permite adiciones de lenguaje potentes a medida que percibimos oportunidades para nuevos patrones de desarrollo; Sin embargo, su mal uso puede conducir a un código poco claro y desordenado.

Comparte