Functor Objects

La verdad es que después de mucho discutir(por aquí, aquí, o aquí) sobre las ventajas de las lamba functions, closures, etc. en PHP 5.3, todavía no tengo muy claro cómo aplicarlo a mi código. En MundoGris, defienden que apenas hay cosas útiles, y que debemos fijarnos en el nuevo “magic method” __invoke como lo que realmente resultará útil. El __invoke nos permitirá crear clases que funcionan como funciones (ideales para luego reutilizarlas con array_map, array_filter,etc…). A continuación un ejemplo directamente copypasteado de MundoGris:

class GreaterThan {
	private $limit;
	public function __construct($limit) { $this->limit = $limit; }
	public function __invoke($number) { return $number > $this->limit; }
}
function filterGreaterThan($array, $limit) {
	$array = array_filter($array, new GreaterThan($limit));
}

Como vemos, GreatherThan es una clase con un método __invoke que array_filter utilizará para elegir aquellos miembros del array que sean mayores que $limit. Me ha parecido una solución útil e interesante.

Etiquetas:
, , , ,

Comenta el articulo:

Requerido

Requerido,