28-07-2009 Luis Artola
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.