Probando las novedades de PHP 5.4

A pesar de que algunos aún estamos asimilando y adaptándonos a las novedades de PHP 5.3, se está hablando mucho estos últimos días de las novedades de PHP 5.4, a raíz de la reciente liberación de la cuarta release candidate de esta versión. Así que después de leer sobre ello me he decidido a probar un poco y la he instalado en casa.

De las novedades de la versión las que más me han llamado la atención y las que creo que más útiles me van a resultar son los traits y el servidor web embebido. Aparte de estas dos y de las mejoras en el propio motor y extensiones, otras novedades de las que no voy a hablar hoy pero parecen interesantes son:

  • Array dereferencing (un poco raro lo de poner corchetes al final de una función :p )
  • Soporte para DTrace
  • Nueva función http_response_code()
  • Llamadas indirectas a métodos estáticos de una clase mediante un array
  • Permite el uso de $this en closures dentro de métodos

Traits

Creo que se puede decir que los traits han sido la solución de PHP para implementar lo que muchos pedían, ‘herencia múltiple’ o la posibilidad de crear una clase que extienda múltiples clases, y así poder reaprovechar mejor el código. La manera de usar sería:

<?php

trait HelloWorld {
    private $whatelse;

    public function sayIt() {
        echo 'Hello World!'. PHP_EOL;
        echo $this->whatelse . PHP_EOL;
    }
}

class Producto {
    use HelloWorld;

    public function __construct($string) {
        $this->whatelse = $string;
    }
}

class Servicio {
    use HelloWorld;

    public function __construct() {
        $this->whatelse = date('c');
    }
}

$servicio = new Servicio();
$producto = new Producto('Internet');

$servicio->sayIt();
$producto->sayIt();
 

Esta sería la respuesta a este pequeño script:

Hello World!
2011-12-29T23:27:19+00:00
Hello World!
Internet

Sé que no es el mejor ejemplo pero creo que se entiende.

Servidor web embebido

Ya dejan bien claro desde PHP que se trata simplemente de un servidor para desarrollo, y no para usar en entornos de producción. Pero aún así, creo que nadie va a negar la utilidad de que PHP incluya su propio servidor y que no necesitemos instalar Apache ni ningún otro servidor web para poder ejecutar y probar nuestras aplicaciones. Para arrancar el servidor simplemente tenemos que ejecutar lo siguiente (es probable que tengas que hacer sudo):

php -S <addr>:<port> -t <docroot>

Por ejemplo:

php -S localhost:80 -t /var/www

Al ejecutarlo arrancaríamos el servidor web en el puerto 80 con el document root en /var/www; el log de accesos y errores aparecería directamente en consola. Para pararlo simplemnte pulsaríamos Ctrl+C.

Instalación

Como sabéis PHP5.4 no es una versión estable, pero si queréis instalarlo en vuestro entorno de desarrollo o de pruebas podéis ir a esta web, descargarlo y compilarlo.

Si usáis Ubuntu y no os queréis complicar, podéis hacerlo mucho más fácilmente siguiendo este pequeño tutorial. Eso sí, aviso que cuando lo probé yo el paquete no estaba actualizado aún y te instalaba la RC3.

Por último, feliz año a todos y que programéis mucho :p

Comentarios