Novedades de PHP 7.3
Todas las novedades de la versión 7.3 de PHP

Hoy mientras comía me he visto esta charla de Rasmus Lerdorf (el creador de PHP) en la que habla de las novedades que trae la versión 7.3 de PHP y he decidido resumir en este artículo los principales puntos de la misma:
Os recomiendo que veáis al menos los primeros 10 minutos ya que en ellos cuenta cómo se le ocurrió desarrollar PHP y alguna anécdota muy interesante (por ejemplo cómo surgió la instrucción LIMIT
de MySQL).
Dicho esto, veamos las novedades!
Flexible Heredoc
Hasta ahora, la sintaxis heredoc era bastante rígida lo cual provocaba que muchos desarrolladores no la empleasen debido a que habitualmente conllevaba una peor legibilidad del código que la contenía.
Con la llegada de PHP 7.3, se introducen dos nuevas mejoras para esta sintaxis:
- La posibilidad de tabular la primera línea
- Se elimina la necesidad de introducir una nueva línea al final del marcador de cierre.
Lo primero permite pasar de:
<?php class foo { public $bar = <<<EOT
bar
EOT; }
a ésto:
<?php class foo { public $bar = <<<EOT
bar EOT; }
Mientras que lo segundo nos permite evitar tener que añadir una nueva línea una vez que cerramos el heredoc:
$values = [<<<END
a
b
c
END, 'd e f'];
Asignación por referencia con list
Con PHP 7.1 llegó la nueva sintaxis que permitía desestructurar arrays del mismo modo que hacemos en javascript:
// old skoollist($a, $b, $c) = ['foo', 'bar', 'baz']; echo $a; // "foo" echo $b; // "bar" echo $c; // "baz"// new age[$a, $b, $c] = ['foo', 'bar', 'baz'];
Sin embargo no podíamos asignar por referencia, cosa que ahora en PHP 7.3 sí podemos:
[$a, &$b, $c] = ['foo', 'bar', 'baz'];
Trailing comma permitida en las llamadas a funciones
Hasta ahora, esto daba fallo:
$newArray = array_merge($one, $two, $three,)
cosa que ahora es permitido.
Sin embargo, ésto:
public function __construct(
$apiClient,
array $options = [],
) { }
todavía sigue dando error de sintaxis.
fpm_get_status()
La nueva llamada fpm_get_status
nos permite acceder a las estadísticas de fpm de una manera muy sencilla por si necesitamos montar un dashboard con ellas. Muy muy útil la verdad.
is_countable
PHP 7 es bastante estricto en lo que se refiere a la función count
, por lo que antes de emplearla era necesario escribir algo de este estilo:
if (is_array($foo) || $foo instanceof Countable) {//}
para evitar fallos en tiempo de ejecución con variables que no pudieran contarse.
Ahora tenemos un shortcut para esa comprobación:
if (is_countable($foo)) {//}
array_key_first() y array_key_last()
Estas dos nuevas funciones nos permiten extraer la primera y la última clave de un array:
$a = ['first' => 'foo', 'second' => 'bar', 'third' => 'z'];echo array_key_first($a); // firstecho array_key_last($a) // third
JSON Exception
Ahora es posible validar un json mediante la combinación de un bloque try/catch
y la flag JSON_THROW_ON_ERROR
, lo cual nos permite escribir un código similar a éste:
use JsonException; try { $json = json_encode($myArray, JSON_THROW_ON_ERROR); return $json; } catch (JsonException $e) { throw new \Exception('Not a valid json');}
Mejoras en rendimiento
Esta nueva versión, si bien no trae el increíble salto que supuso el cambio de PHP 5 a PHP7, sí que supone una pequeña mejora con respecto a PHP 7.2 como podéis ver en el gráfico:

¡Ojo! Soporte de versiones
Con la llegada de PHP 7.3 es necesario recordar que algunas versiones anteriores están cerca de quedarse obsoletas.
- Las versiones 5.6 y 7.0 dejan de recibir actualizaciones de seguridad
- La versión 7.1 será mantenida hasta finales de este año 2019
- La versión 7.2 será mantenida hasta finales de 2020
De modo que si tenéis que configurar un nuevo proyecto con Symfony/Lavarel o cualquier otro framework que use PHP yo me decantaría como poco por la 7.2 para “despreocuparnos” en lo que a mantenimiento de PHP se refiere.
Optimizaciones de la OPCache
A modo de curiosidad, desde PHP 7.2 OPCache es capaz de realizar ciertas optimizaciones gracias a la optimización de los algoritmos encargados de detectar DCE (Dead Code Elimination). Aquí tenéis un ejemplo:


Y para terminar… lo que está por llegar
La siguiente versión de PHP (7.4) nos traerá de nuevo importantes novedades, algunas de ellas ya han sido aceptadas y otras están todavía en la fase de revisión.
No obstante, seguramente la más importante de ellas sea la posibilidad de tipar las propiedades de nuestras clases:
class A {
public string $name;
public Foo $foo; }
y la de realizar un preloading de ciertos archivos PHP en el arranque del servidor, lo cual acercará mucho el rendimiento de estos archivos a las extensiones nativas escritas en C.
Os seguiré contando conforme se vayan confirmando!
¿Quieres recibir más artículos como este?
Suscríbete a nuestra newsletter: