Marc Morera

databasing my brain

PHP 5.4. Nuevas funcionalidades.

flattr this!

Parece ser que PHP 5.4 está al caer ( Almenos ya vamos por la 6a Release Candidate, así que no puede faltar mucho… ).

Observando entre todas las posibilidades nos damos cuenta que realmente hay un par o tres de nuevas funcionalidades cuya necesidad hemos tenido en algún punto de nuestra vida.

  • Traits
  • Array dereferencing
  • Servidor web incorporado
  • Añadido la variable max_input_vars para prevenir ataques DoS
  • Uso de $this en Closures dentro de métodos

En esta página está una lista completa sobre todas las modificaciones y mejoras que aporta esta nueva versión de PHP5.

Explicaré tres de ellas, para mi, las mas relevantes de todas.

Traits

Si en alguna parte de vuestra vida habeis tenido la sensatez de leeros un libro que hable sobre patrones de programación, sabréis qué es la herencia. Clases que extienden clases, o sea, clases que toman las características de otros objetos. Por ejemplo, podemos tener una clase llamada persona, y dos clases que extiendan la clase persona: Las clases Anciano y Joven. Tenemos la capacidad de extraer un conjunto de propiedades comunes entre las dos clases, para hacer otra mas genérica.

<?php
 
    class Persona
    {
        /**
         * Entero. Edad de la persona.
         */
        public $edad;
    }
 
    class Anciano extends Persona
    {
        /**
         * Booleano. Esta jubilado?
         */
        public $estaJubilado;
    }
 
    class Joven extends Persona
    {
        /**
         * Booleano. Es adolescente?
         */
        public $esAdolescente;
    }
 
    $juan = new Anciano();
    $juan->edad = 65;
    $juan->estaJubilado = true;
 
    $marta = new Joven;
    $marta->edad = 12;
    $marta->esAdolescente = false;

Pero que pasa cuando queremos extender Anciano y Joven de otra clase llamada Trabajador? No podemos extender todas las clases Persona de Trabajador ya que no todas las personas son trabajadoras, verdad? A lo mejor tendríamos una clase extendiendo de Persona llamada Bebé, y esta no debería extender de Trabajador.

PHP 5.4 nos facilita las cosas con los llamados Traits. Son trozos de código que podemos incluir dentro de nuestras clases, emulando una heréncia múltiple. Así Nos quedaría así nuestro modelo:

<?php
 
    trait Persona
    {
        /**
         * Entero. Edad de la persona.
         */
        public $edad;
    }
 
    trait Trabajador
    {
        /**
         * Float. Nivel de cotización del trabajador en porcentaje
         */
        public $cotización;
    }
 
    class Anciano
    {
        use Persona;
        use Trabajador;
 
        /**
         * Booleano. Esta jubilado?
         */
        public $estaJubilado;
    }
 
    class Joven extends Persona
    {
        use Persona;
        use Trabajador;
 
        /**
         * Booleano. Es adolescente?
         */
        public $esAdolescente;
    }
 
    $juan = new Anciano();
    $juan->edad = 65;
    $juan->cotización = 23.65;
    $juan->estaJubilado = true;
 
    $marta = new Joven;
    $marta->edad = 12;
    $marta->cotización = 0;
    $marta->esAdolescente = false;

Es una mejora útil, aunque afecta directamente al modelo de datos. Podremos implementar esta mejora en nuevos proyectos, así como en refactorings de modelo.

Array dereferencing

Dado este ejemplo

<?php
 
    $array = $this->dameUnArray();
    $primero = $array[1];

podemos llegar a ahorrarnos un paso con esta nueva funcionalidad.

<?php
 
    $primero = $this->dameUnArray()[1];

La verdad es que hace unos años que lo echaba en falta.

Servidor web incorporado

Aunque solo sea para entornos de desarrollo, es útil poder desarrollar tus aplicaciones web sin tener que depender de un servidor Apache. PHP 5.4 trae embedido un servidor minimalista que funciona desde consola.

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

De este modo añadimos un listener en el puerto 80 de localhost. La carpeta que mapea el servidor es la que pasamos como parámetro -t

Como siempre expectantes de esta nueva versión, ya que al parecer, cambiará un poco nuestra forma de entender ciertos modelos de datos, y ayudará a mejorar un poco más nuestras lineas de código.

, , , ,

One thought on “PHP 5.4. Nuevas funcionalidades.

Leave a Reply

Your email address will not be published. Required fields are marked *


one × 8 =

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>