Novedades de PHP6

php6Los desarrolladores del motor de PHP llevan ya varios meses trabajando en la versión 6. De momento no parece que vaya a ver la luz en breve, pues acaban de liberar la versión 5.3 para postergar en la medida de lo posible la aparición de la nueva versión. En cualquier caso, es interesante estar al día e ir preparando nuestros desarrollos actuales para las posibles incompatibilidades con la nueva versión.

Recientemente preguntaban a Zeev Suraski, co-fundador de Zend Technologies Inc. sobre la versión 6 de PHP de la que se lleva algún tiempo hablando pero que parece que no acaba de ver la luz. En la entrevista, Zeev nos comentaba:

PHP6 es un proyecto mucho más difícil que PHP4 y 5 principalmente por dos razones:

  • La cantidad de código PHP que hay afuera, es tan inmensa.
  • Cada pequeña incompatibilidad que uno introduce se convierte en un horrible dolor de cabeza para mucha gente. Y combinado con la principal cosa que queremos hacer con PHP6, que es la introducción de soporte nativo para Unicode, es imposible no introducir una cantidad significativa de incompatibilidades en el lenguaje. No sé cómo va a resultar esto, estoy siendo completamente honesto.

Según su prespuesta, parecía lógico preguntarle sobre como de complicada se prevé que sea la migración de una plataforma PHP5 actual a la nueva versión:

La migración de la versión 4 a la versión 5 fue bastante exitosa. Tomó algunos años, pero hoy PHP5 ya es mucho más popular de lo que la versión 4 jamás lo fue. Hemos tomado la decisión de no apurar la transición, así que actualmente nos hemos concentrando en PHP 5.3.

En esta versión que ya ha visto la luz, hemos agregado algunas de las características que originalmente estaban planeadas para PHP6, como por ejemplo, los espacios de nombres (namespaces). Probablemente pase bastante tiempo antes de que PHP6 seará liberado.

¿Qué novedades introduce PHP6?

El 11 de Noviembre del 2005 el núcleo central de desarrolladores de PHP se encontraron en París para decidir el camino que iva a tomar PHP6. Los principales cambios que se plantearon implementar son:

  • Unicode: Es el cambio más relevante en esta nueva versión. En PHP5 se puede activar Unicode bajo petición, pero en este caso, se dispara el consumo de recursos debido a que PHP tiene que almacenar todas las variantes de funciones, métodos y clases tanto en Unicode como en no-Unicode en la tabla de símbolos.
  • Register Globals eliminadas: Cualquier variable global registrada que aparezca en el código nos devolverá un error E_CORE_ERROR y un enlace a la documentación en la que se detalla porqué es contraproducente utilizarlo. Para la versión actual 5.3 ya han sido marcadas como deprecated.
  • Magic Quotes eliminadas: El bajo rendimiento de magic_quotes, magic_quotes_sybase y magic_quotes_gpc ha provocado la decisión de colocarlas como deprecated en la versión actual 5.3 y de eliminarlas definitivamente para la versión 6.
  • Modo seguro eliminado: La razón es que aparentemente daba una idea errónea de que hacía a PHP seguro, cuando en realidad no mejoraba en nada la seguridad, si bien, open_basedir se conservará.
  • ‘var’ y ‘public’ tendrán el mismo significado: Con PHP6 una variable ‘var’ va a considerarse ‘public’ adquiriendo idéntico significado. Desaparecerá el warning mostrado al usarlo aunque tengamos configurado  el nivel de error como E_STRICT.
  • Return by Reference devolverá un error: Tanto $foo =& new StdClass() como function &foo producirán ahora un error E_STRICT.
  • Compatibilidad zend.ze1 eliminada: ze1 intentó conservar el viejo comportamiento de PHP4, pero aparentemente “ni siquiera funciona al 100%”, así que será eliminado por completo y dará un error E_CORE_ERROR si se detecta.
  • Se abandona el soporte de Freetype1 y GD1: Bibliotecas totalmente obsoletas y que no tiene sentido seguir manteniendo.
  • FastCGI siemper activado: El código de FastCGI será renovado y estará siempre disponible para la CGI SAPI, no podrá ser desactivado.
  • Register Long Arrays eliminado: En PHP6 sólo $_POST y $_GET serán aceptados, HTTP_*_VARS va a devolver un error.
  • Las extensiones XMLReader y XMLWriter movidas: Se moverán al núcleo de distribución y permanecerán activas por defecto.
  • Extensión ereg eliminada: La introducción de las librerías ICU (necesarias para el tema de Unicode) han motivado el movimiento de la extensión ereg a PECL y por lo tanto será eliminada de PHP. A partir de ese momento se deberán usar la nueva extensión de expresiones basadas en ICU.
  • Fileinfo por defecto: La extensión Fileinfo se verá desplazada al núcleo de la distribución y estará activada por defecto.

Si bien, a pesar de que parece que la línea seguída por los desarrolladores es esta que se comenta en el artículo, no se podría asegurar al 100% que la versión 6 definitiva incorpore todos los cambios mencionados o no aparezca algun otro importante no descrito.

Vía | Maestrosdelweb.com

One thought on “Novedades de PHP6

  1. En versiones anteriores a la version 5.3 se puede hacer uso de las variables globales sin que php nos mande un error, o existe una forma de configurar php para admitir las variables globales…

Comments are closed.