Novedades en PHP 5.4

En el post anterior vimos por qué actualizar a PHP 5.4 en cuanto a factores de optimización del núcleo central, pero, ¿qué novedades trae esta nueva versión?

54_1

Servidor web incorporado

Uno de los cambios más grandes en PHP 5.4 es la adición de un servidor web incorporado. Esto nos permite utilizar PHP sin tener que instalar Apache o IIS y poder probar nuestro sitio en un instante. No es un súper servidor robusto, pero es genial para el manejo de un cierto desarrollo y pruebas en una sola máquina. Con el fin de iniciar el servidor web, la forma más fácil es navegar a la carpeta raíz de PHP y, a continuación, ejecutar PHP usando el flag S.

Este servidor utiliza la carpeta public_html como raíz de los contenidos por ello debemos de crearla bajo la carpeta principal de PHP y allí ubicar todos los archivos de nuestro sitio web.

php –S localhost:80

En caso de que nos salga el siguiente error failed to listen on localhost:80 (reason:Permission denied) es porque otra aplicación está utilizando este puerto, lo que debemos hacer es sustituirlo por el puerto 8080 por ejemplo.

Para salir con CTRL+C bastaría.

Reloj de alta precisión

En un momento u otro, la mayoría de los desarrolladores de PHP terminamos volviendo a nuestro código en busca de cuellos de botella o tratando de solucionar códigos problemáticos. PHP 5.4 introduce un nuevo temporizador de alta precisión que hace un seguimiento cuando una solicitud se inició y nos permite determinar el tiempo que tardan las diferentes partes de nuestro código. La principal forma en que esto funciona es utilizando una variable SERVER especial: REQUEST_TIME_FLOAT.

$start_time = $_SERVER[‘REQUEST_TIME_FLOAT’];

echo “Tiempo de ejecución”, microtime(true) – $start_time;

Mejoras en el manejo de matrices (arrays)

PHP 5.4 trae consigo una serie de mejoras en la forma en que se trabaja con matrices. Las matrices son una de las mejores maneras de manejar los datos en cualquier aplicación, y estas mejoras hacen que sea más fácil trabajar con ellas. En concreto, hay dos cambios importantes que facilitarán nuestra forma de trabajar. Uno es utilizando la notación corta como en JavaScript, y el otro es lo que se llama eliminación de referencias.

Notación corta de matrices:

$array = array(1,2,3,4,5,6);
$array = [1,2,3,4,5,6];

Eliminación de referencias:

¿Qué es la eliminación de referencias? Es permitir acceder a los objetos sin establecerlos explícitamente. Anteriormente, si teníamos una función que devolvía un array, tendríamos que crear primero una variable, establecer su valor en el resultado de esa función, y entonces se podría acceder a cualquier elemento de esa variable. Sin embargo, ahora se puede hacer en la misma línea de código. Sólo tenemos que llamar a la función, y entonces podemos tener acceso a lo que se devuelve directamente en una sola línea.

Funciones anónimas

Las funciones anónimas o clousures son funciones creadas sin un nombre, y están generalmente vinculadas a otras funciones. Creadas en PHP 5.3, estas funciones son típicamente creadas sobre la marcha, y como tal no tenían acceso a los objetos fuera de lo que estaban siendo pasados como argumentos. PHP 5.4 añade la capacidad de acceder a las variables del ámbito y, por tanto, el alcance de la clase matriz.

¿Qué utilidad tiene esto? ¿Por qué iba yo a crear una función que devuelve una función ? Al pasar por ahí como funciones variables, nos permite encapsular esencialmente lógica que se puede llamar en un momento posterior en la ejecución de código . Solemos usar esta opción si deseamos que algo suceda después de que ocurra otro evento. Por ejemplo, si yo llamo a un servicio web y quiero llamar a otra función para procesar los resultados, esto es una buena manera de hacerlo. Una gran parte de frameworks utilizan esta característica para obtener los encabezados, pies de página, o para hacer otras cosas.

Acceso a miembros de la clase en la creación de instancias

Muchas de las nuevas características añadidas en PHP 5.4 son aparentemente pequeñas, pero acortan el tiempo de codificación. La posibilidad de acceder a miembros de la clase en la creación de instancias es un buen ejemplo de esto. En versiones anteriores de PHP, no se podía acceder a los miembros de una clase PHP sin crear instancias de la clase primera.

$time = new Datetime();
echo $time->getTimestamp();

Ahora podríamos hacer lo siguiente:

echo (new Datetime())->getTimestamp();

Nuevos comandos

Además de las otras características que hemos visto PHP incluye una serie de nuevas funciones que pueden ser útiles para hacer una serie de tareas cuando estás desarrollando en 5.4. Una de las nuevas incorporaciones es la capacidad de obtener el estado de la sesión con session_status. Si hemos configurado session.autostart en su php.ini a 1 hay que tener mucho cuidado porque esto indica el inicio automático de la sesión y el estado será entonces siempre 2 porque la sesión se inicia automáticamente en cada página.

Otra característica útil es la capacidad de obtener el código de respuesta HTTP con http_response_code. En la mayoría de las ejecuciones normales, este valor va a ser de 200, y de hecho es 200 lo que indica el éxito de nuestra ejecución. Sin embargo se puede utilizar la misma función para establecer el código simplemente pasando el número, por ejemplo el 404, esto le enviará un código 404 al navegador, y si el navegador está debidamente configurado, mostrará el error 404. Esto puede ser muy útil cuando se trabaja con los servicios web pues a menudo utilizan estos códigos para determinar cómo responder una llamada.

Otra función útil es la hexadecimal a binario. Hay algunas nuevas características adicionales que manejan datos binarios dentro de PHP 5.4 y uno de ellos se llama hex2bin.

PHP 5.4 trae consigo una serie de funciones que nos permiten hacer una serie de tareas de control sobre las sesiones, a la interacción con las cabeceras, a la transformación de hexadecimales a binarios. Si bien estos son sólo unos pocos, son sin duda algunas adiciones útiles.

Comentarios