Closures en PHP 5.3

Me quedo sorprendido al enterarme de que, probablemente, las “closures” serán implementadas en PHP 5.3.

Las closures son la posibilidad de pasar como argumento un trozo de código. Es una de las principales ventajas de Ruby frente a PHP y amplía enormemente las posibilidades de reutilización de código…

Parece que la publicación de PHP 5.3 va a ser un acontecimiento casi tan importante como la publicación de PHP 5.0…

Actualización:

Venkman me corrije en los comentarios (mejorando tanto la definición chorrifláutica que había puesto de closures, que lo voy a poner en el propio post):

Una “closure” es una construcción que existe en tiempo de ejecución que vincula una función con un entorno (scope) diferente -y ya cerrado- al entorno en el que se ejecuta.

Es decir, es la construcción que abarca una función (que puede ser anónima o no serlo; es decir, puede ser un “trozo de código” o no) y un entorno de resolución (scope) que está accesible para esa función pero no para el resto porque ya está “cerrado”.

5 Comentarios

  • 1. Venkman  |  julio 22nd, 2008 at 9:01 am

    “Las closures son la posibilidad de pasar como argumento un trozo de código”

    No.
    Una “closure” es una construcción que existe en tiempo de ejecución que vincula una función con un entorno (scope) diferente -y ya cerrado- al entorno en el que se ejecuta.

    Es decir, es la construcción que abarca una función (que puede ser anónima o no serlo; es decir, puede ser un “trozo de código” o no) y un entorno de resolución (scope) que está accesible para esa función pero no para el resto porque ya está “cerrado”.

  • 2. Enrique Place  |  julio 28th, 2008 at 9:12 pm

    Opinión personal (como siempre) creo que al mundo PHP no le va a aportar mucho, vamos a seguir con el camino poder hacer cualquier cosa, sin nigún tipo de reglas (como hasta ahora).

    Java es más estricto que PHP, e incorporar algo de flexibilidad no le va a hacer daño, aunque hay muchas discusiones al respecto si este tipo de medidas rompen reglas de diseño.

    ¿Pero PHP? Donde ya por formación / deformación los desarrolladores no diseñan bien los sistemas, agregarle más caminos alternos?

    Creo que a PHP habría que sacarle un poco de “flexibilidad” para tener un camino más claro para trabajar, como hacen otros lenguajes.

  • 3. Luis Artola  |  julio 29th, 2008 at 9:44 am

    Hola Enrique,

    como no podía ser de otra manera: no estoy de acuerdo. :-D

    Creo que PHP debe de ofrecer los máximos mecanismos posibles de reutilización de código y orientación a objetos. Creo que debe seguir la estela (y si fuera posible, liderarla) del resto de lenguajes de scripting. PHP no debe seguir a Java, debe seguir a Scala, Ruby o Python y, como digo, si puede adelantarlos.

    Me parece que eres un poco “stiffy”:
    http://shiflett.org/blog/2006/feb/ruby-on-rails-fans

    Por cierto, ¿Qué opinas sobre el uso de annotations en Java? ¿demasiada flexibilidad? ¿por qué Java 6 ofrece posibilidades de scripting?

    Creo que PHP debe ser lo más potente y flexible posible e incorporar todas las innovaciones en lo que a implementación de lenguajes de scripting se refiere.

    Que conste que te doy toda la razón en cuanto a que los programadores de PHP tienen menos cultura del uso de OO que los programadores Java. Y si es verdad que eso ocurre porque Java te obliga a usar OO…

    Un saludo!

  • 4. Futuro de PHP: closures, &hellip  |  diciembre 11th, 2008 at 10:31 am

    [...] motidito el mundo del PHP. Ya sabíamos que PHP 6 traería Traits, que PHP 5.3 traería closures, o que cuando la 5.3 estuviera suficientemente expandida saldría Zend Framework 2.0 y que sería [...]

  • 5. Damian  |  abril 27th, 2010 at 4:26 am

    Aca encontrè un post que explica que son las closures y como las implementa PHP 5.3
    http://www.hasheado.com/closures-en-php-5-3.html

Comenta el articulo:

Requerido

Requerido,