Hola  Wecindario, hoy vamos a ver todo lo que deberías saber sobre el PHP 8, así antes de actualizarlo ya sabes qué hay de nuevo

Las características que presenta PHP 8.1

PHP 8.1 está en beta y está siendo probado en la actualidad.Y las novedades son:

  • Enum: Las llamadas enumeraciones con un número determinado de valores están disponibles como tipo de variable.
  • Fibers: Con Fibers podemos  ejecutar múltiples hilos en paralelo.
  • Arrays: Con php 8 es posible desempaquetar las matrices con cadenas.
  • Readonly: Las propiedades de las clases pueden ser marcadas como solo lectura ('readonly'), y, no se puede modificar
  • Intersección: Los tipos de intersección están disponibles.
  • Never: El valor  'never' indica que la función se termina y no devuelve ningún otro valor.
  • Final: Las constantes de la clase pueden ser marcadas cómo 'final' para que no puedan ser modificadas por ninguna subclase.
  • Fsync: Hay dos funciones 'fsync' y 'fdatasync'  que sincronizan los datos del buffer al medio de almacenamiento.
  • Octal: Se indica el sistema numérico octal, además del '0' (cero).
  • Globals:  '$GLOBALS' ha sido restringido y ahora resulta en un mensaje de error en algunos casos.
  • Null: Las funciones internas ya no aceptará valores nulos en argumentos no anulables.

PHP 8: lanzamiento en noviembre de 2020

El 26 de noviembre de 2020 se lanzó PHP 8.0.0. El  PHP 7.4, había estado activo durante un año, después de que se finalizara con el soporte de PHP 7.1.

Cómo os podéis imaginar, algunas páginas web escritas en PHP utilizan una versión antigua. Ya que si no muchas webs hubiesen dejado de funcionar. Si es posible, como puede imaginarte lo que pasa es que no es recomendable. Por seguridad, por rendimientos y por muchas cosas más

¿Habrá complicaciones con los códigos antiguos?

PHP 8 es una nueva versión principal, y cabe recordar que algunos códigos antiguos no serán compatibles. La gran mayoría de cambios que podrían tener complicaciones ya estaban desactualizadas en las versiones anteriores  7.2, 7.3 y 7.4.

Los últimos cambios incluyen:

  • Magic quotes legacy
  • array_key_exists() with objects
  • FILTER_SANITIZE_MAGIC_QUOTES filter
  • Reflection export() methods
  • mb_strrpos() with encoding as 3rd argument
  • implode() parameter order mix
  • convert_cyr_string() function
  • money_format() function
  • ezmlm_hash() function
  • The real type
  • hebrevc() function
  • Unbinding $this from non-static closures
  • restore_include_path() function
  • allow_url_include ini directive

Si  tu código ha estado siempre actualizado, no vas a tener ningún problema,

Microsoft ha dicho que la compañía ya no ofrece compatibilidad de Windows para PHP 8 y versiones posteriores. En cambio, los desarrolladores de PHP ya han anunciado su intención de solucionar el problema.

Las nuevas características de PHP 8

La versión de 8 de PHP lleva nuevas características que amplían las posibilidades de los desarrolladores web. Aquí te mostramos los cambios más importantes .

El compilador JIT

El mayor cambio es el compilador JIT, mejorando considerablemente el rendimiento. Recuerda que PHP no se compila, se interpreta línea por línea. Y entonces el compilador JIT (Just in Time) compila parte del código durante el tiempo de ejecución, funcionando de forma muy similar a una versión en caché del código.

El tipo de retorno estático (Static return type)

Static es un nombre de clase especial y con la nueva versión será un tipo de retorno válido junto a self & parent.

WeakMap

Cómo ya sabrás en PHP 7.4 estaban los WeakRefs y debes saber que en la  8 ofrece con WeakMaps una extensión de la misma. WeakMaps y WeakRefs ambas pueden usarse para eliminar objetos, solo si la caché aún referencia a las clases de entidad de los objetos. Elejemplo sacado de la documentación:

 

class FooBar {
    private WeakMap $cache;
    public function getSomethingWithCaching(object $obj) {
        return $this->cache[$obj] ??= $this->computeSomethingExpensive($obj);
    }
    // ...
}

Usar class en los objetos

En otras versiones se tenía que usar get_class() para asignar la clase a los objetos. Ahora se puede usar::class directamente en los objetos. Así el código será más limpio.

Interfaz encadenable (Stringable interface)

Stringable interface se añade de forma automática a las clases que implementan el _toString(). Esto se hacía antes manual. Leyendose asía:

 

class Foo
{
    public function __toString(): string
    {
        return 'foo';
    }
}
function bar(Stringable $stringable) { /* … */ }
bar(new Foo());
bar('abc');

La función fdiv()

Con la función fdiv() podemos tener una división por 0. Y se obtiene INF, -ING o NAN como valor de retorno.

Los errores de tipo (Type errors)

Antes, solo las funciones definidas por el usuario activaban los TypeErrors. Las funciones internas mostraban una advertencia y daban null. Con PHP 8, la mayoría de las funciones internas también producen TypeErrors.

Reclassified engine warnings

Hasta ahora había muchos errores que solo emitían un aviso. Esto se ha actualizado. Aquí encontrarás un listado completo de los nuevos mensajes de error en PHP.

¡Y esto es todo wecindario!

¡Hasta la próxima!

Accede a más contenido

En Hoswedaje, ofrecemos una diversidad de contenido que os puede resultar útil. En este caso, os dejamos 2 artículos relacionados con el tema de hoy, como puede ser por qué es importante instalar un Certificado SSL en tu web, y por otro lado otro post sobre el uso de imágenes WEBP para mejorar el tiempo de carga. Si tienen alguna consulta, no duden un instante para hacerla.

ip publica Descubre por qué es importante instalar un Certificado SSL en tu web, pinchando en este enlace.

ip publica Conoce todo el uso de imágenes WEBP para mejorar el tiempo de carga, leyendo esta publicación.