PHP 7: Novedades y cambios

Si eres un programador, desarrollador web o simplemente tienes algunas páginas webs realizadas con algún gestor de contenidos (cms) como WordPress, Joomla, Drupal, Magento, etc… seguro que te interesa saber que pasa con PHP 7 y que novedades y cambios trae consigo.

Yo he realizado algunas pruebas durante estos últimos días para comprobar de primera mano los cambios y novedades que se comentan en la comunidad de php.

Seguro que hay más cosas pero voy a intentar comentar unas pocas para que te hagas una idea.

¿Qué pasa con PHP 6? ¿Dónde está?

Si eres programador PHP seguro que sabrás que PHP 6 ya existía. Si, como una versión o proyecto experimental pero que nunca se llegó a poner en producción. Tampoco es que me preocupe mucho este asunto pero bueno, ahí queda como curiosidad.

El caso es que al existir PHP 6 como proyecto experimental, no se ha querido que la nueva versión de PHP produjera confusiones entre la comunidad de programadores y es por eso que tras la versión 5.6 se ha decidido pasar directamente a PHP 7.

Esto no hay que tomárselo de ninguna forma porque no aporta más. Es más, creo que incluso estoy de acuerdo con la decisión que se ha tomado.

Dos veces más rápido

Esto siempre nos gusta a todos, ¿A que si? Bueno, es lo que yo supongo porque a mi estas cosas me gustan mucho, claro que si y por eso asumo que a todos los programadores y programadoras nos gusta que nuestros programas carguen más rápido.

Pues si, el equipo de desarrollo de PHPNG ha optimizado el uso de memoria añadiendo compilación just-in-tim (JIT) lo que permite la compilación en tiempo de ejecución en lugar de antes de ejecución.

Es más, utilizando PHP 7 no solo el código se ejecutar más rápido sino que además necesitaremos menos servidores para servir a la misma cantidad de usuarios.

En resumen, el doble de peticiones por segundo!! Nada más y nada menos!

Mejora en el manejo de errores

En PHP nunca ha sido fácil el manejo de errores pero con el nuevo EngineException podremos sustituir los errores fatales por excepciones. De todas formas sin no se detecta la excepción, seguirá devolviendo los acostumbrados errores fatales como hasta ahora.

Para manejar o atrapar los errores, PHP 7 introduce una nueva clase parent. Esta clase es BaseException.

Sin duda una buena noticia para los programadores.

Soporte para sistemas Windows 64 bits

Hasta ahora, la versión actual de PHP no soporta números enteros de 64 bits y tampoco archivos grandes.

Esto se soluciona con PHP 7 ya que introduce soporte para versiones Windows de 64 bits. De esta forma se podrá ejecutar PHP en sistemas operativos Windows con más seguridad.

Claro que no es mi caso, al menos por ahora ya que siempre trabajo sobre entornos basados en linux. Pero bueno, ahí queda eso y siempre está bien este tipo de mejoras.

Nuevo operador de comparación combinada <=>

Interesante aporte. Este operador que ya existía en algunos lenguajes de programación, por fin está disponible en PHP 7.

¿Cómo funciona? Pues básicamente devolverá 0 si los dos operandos son iguales. 1 si el de la izquierda (antecedente) es mayor y -1 si es mayor el de la derecha.

<?php
/**
 * Operador de comparación combinada
 */
$array = [
    "1 <=> 1" => 1 <=> 1,
    "1 <=> 2" =>1 <=> 2,
    "2 <=> 1" => 2 <=> 1
];
var_dump($array);

Nuevo operador nulo coalescente  ??

Menudo nombre para este nuevo operador!

No hay que asustarse porque no es para tanto.

Lo utilizaremos cuando queramos comprobar si existe algo y devolver un valor por defecto en el caso de que no sea cierto.

Devuelve el resultado del primer operando si existe y no es nulo. Devolverá el segundo operando en cualquier otro caso.

Declaraciones precisas

Ahora disponemos de nuevos tipos para controlar el envío de datos a una función. Estos tipos son: int, bool, float y string.

Lo que quiere decir que podremos validar si el parámetro es un número entero, un booleano, un número decimal o una cadena.

Clases anónimas

Con PHP 7 podremos crear clases anónimas. Qué es esto? Pues no es otra cosa que podremos crear clases sin nombre, definidas en la misma línea de código donde creamos el objeto de la clase.

Esta característica ya existía en lenguajes como C# y Java.

En cuanto a la sintaxis es igual que las clases habituales de PHP lo que pasa es que no escribimos el nombre.

La buena utilización de las clases anónimas puede mejorar el tiempo de ejecución del proyecto web.

var_dump(new class($i) {
   public function __construct($i) {
       $this->i = $i;
   }
});

Un poco de limpieza

PHP 7 ha liberado espacio para permitir la mejora del rendimiento y para esto se ha deshecho de algunas funcionalidades que ya no se utilizaban y algunas APIs antiguas no estaban obsoletas y no eran compatibles con la mayoría de servidores.

Seguramente todo lo que se ha eliminado no lo usabas pero de todas formas hay que tener especial cuidado si actualizamos a PHP 7 desde una versión muy antigua de PHP.

Y muchos más cambios que nos harán la vida del programador más llevadera o eso espero yo por mi parte.

De todas formas, vamos a ver qué tal se porta a partir de ahora.

Soporte de CMSs

  • Drupal 8 soporta PHP 7.
  • Drupal 7 soporta PHP 7.
  • WordPress 4.3.1 soporta PHP 7.
  • Joomla 3.4.5 soporta PHP 7.
  • Joomla 3.5 soporta PHP 7.

Y para terminar este post comentar que he visto por la web en algún sitio que la mejora de rendimiento de WordPress con PHP 7 es del 129%. Impresionante!!

Bueno, como yo soy un poco segurolas, esto habrá que verlo y experimientarlo.

Espero que este post os haya sido de ayuda u os haya aclarado algunas dudas sobre la nueva versión de PHP.

¿A qué esperas para escribir código?