Publicada la versión estable de PHP 5.4

Hace unas horas, y tras ocho versiones release candidate, se ha publicado la esperadísima versión 5.4 de PHP. Esta no es actualización más, ya que supone un punto de inflexión en la historia de PHP.

La lista de cambios y novedades es tan larga como interesante y la puedes consultar en el changelog. Desde el punto de vista de los programadores Symfony2, estas son algunas de las más interesantes:

1. Servidor web incluido. ¿Quieres desarrollar aplicaciones Symfony2? Ya no necesitas ni Apache, ni Ngnix ni nada. Entra en el directorio de tu aplicación y ejecuta lo siguiente:

$ cd proyectos/sf2/cupon
$ php -S localhost:80

Ahora abres un navegador, entras en http://localhost y ya puedes probar tu aplicación Symfony2. Para hacerlo bien del todo, lee este breve artículo donde te explica cómo crear un script de tipo router para las aplicaciones Symfony2.

2. Código más conciso. Ahora puedes utilizar la notación simplificada para crear arrays:

$ids = [1, 2, 3];
$propiedades = ["usuario" => "...", "edad" => 20, "rol" => "admin"];

También funcionan cosas como estas, que evitan tener que crear variables intermedias:

// Si el método devuelve un array, puedes seleccionar un elemento en la misma llamada
$oferta = $em->getRepository('CiudadBundle:Ciudad')->getTodasLasOfertas($slug)[0];

// Utilizar métodos al crear la clase
$usuario = (new Usuario)->setNombre("Anónimo");

// El nombre de los métodos estáticos puede ser una expresión
$slug = Slugger::{"slugify_v".$version}($string);

3. No son clases, pero lo parecen. En ocasiones necesitas que dos clases compartan unos pocos métodos (quizás sólo uno). Si no puedes o no quieres hacer una clase padre de la que hereden las dos, puedes crear lo que se llama un trait, que es como un trozo de clase, pero que no es una clase.

Observa este ejemplo en el que dos clases llamadas Usuario y Oferta comparten dos métodos:

trait metodosComunes {
    function getId() { return $this->id; }
    function getNombre() { return $this->nombre; }
}

class Usuario {
    use metodosComunes;
    /* ... */
}

class Oferta {
    use metodosComunes;
    /* ... */
}

Ahora puedes hacer cosas como lo siguiente:

$usuario->getNombre();
$oferta->getId();

La documentación oficial de traits explica cómo utilizar los traits para usos mucho más avanzados.

4. Mucho más rápido. Al contrario de lo que sucede con la mayoría del software, PHP es más rápido en cada nueva versión. Las primeras pruebas hablan de hasta un 20% de mejora sin tener que hacer ningún cambio. Una de las razones es la cantidad de cosas viejas ("legacy features") que le han quitado. La otra es la mejora en el Zend Engine, que de paso reduce el consumo de memoria significativamente.

¿Cuál es el soporte de PHP 5.4 en Symfony2?

Según los datos del servidor de integración continua Travis, Symfony2 pasa todos los test cuando se ejecuta sobre PHP 5.4 (casi 6.000 tests). Aquí tienes los datos de la ejecución más reciente y aquí el detalle de lo que sucedió al ejecutarlo sobre PHP 5.4.

En los últimos días, también se han realizado cambios en la rama master del repositorio de Symfony2 para asegurar una total compatibilidad con PHP 5.4.

Así que tus aplicaciones Symfony2 deberían funcionar bien sin tener que hacer cambios, a menos que en tu código hayas utilizado alguna de las características que han eliminado. Para saberlo, consulta la guía de actualización de PHP 5.3 a PHP 5.4.

En resumen

PHP 5.4 no es una actualización más. Esta versión marca un punto de inflexión en la historia de PHP por la gran limpieza de opciones obsoletas y por la cantidad de características interesantes añadidas.

Sería una locura actualizar tus aplicaciones hoy mismo, pero también sería una locura no hacerlo en los próximos meses. Así que pregunta hoy mismo a tu empresa de hosting si tiene soporte de PHP 5.4. Y si no lo tiene, empieza a buscar empresas de hosting serias. Por el bien de PHP, no podemos esperar cinco años hasta que se generalice PHP 5.4.

Comentarios

  1. Hola Javier. Habrá que ir mirando la documentación, donde si creo que debemos hacer presión es en las empresas de hosting, como bien dices, ya que hay clientes que usan sus propios proveedores y nos limitan. Yo estoy con un proyecto en CI porque no usan PHP 5.3 en el hosting y me es imposible desarrollarlo en Symfony2. Los trait los veo muy interesantes, yo en local ya me voy a actualizar :) Un saludo.

    Juan Carlos Romero el 2 de marzo de 2012, 10:03:39

  2. thanks for the intro, now to put pressure to those guys

    cordoval el 6 de marzo de 2012, 14:27:26

  3. creo que tiene problemas con APC, alguien puede confirmar/desmentir? Saludos!

    César Rodríguez el 9 de marzo de 2012, 12:37:35

  4. Hola Javier

    Saludos desde Perú, he tratado de contactarme contigo por un tema de consulta sobre la compra de tu libro; espero me puedas dar una pronta respuesta

    Saludos!

    Fabio Salas el 11 de marzo de 2012, 6:20:42

  5. Gracias por la completa información, muy útil, ahora a actualizar...

    Andres Misiak el 19 de marzo de 2012, 15:01:58

  6. por el bien de php nada. por el nuestro! diría asimov

    men el 4 de abril de 2012, 19:05:22

Este artículo ya no permite añadir más comentarios.
¿Por qué? Los artículos cierran sus comentarios automáticamente unos meses después de su publicación para asegurar que estos sigan siendo relevantes.

Publicada el

2 de marzo de 2012

Etiquetas

Proyectos Symfony destacados

La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.