Que cambios y novedades nos trae PHP 8 (con ejemplos)

(*8*)

PHP 8 fue lanzado el veintiseis de noviembre y es un cambio esencial puesto que no es nada más y nada menos que una nueva versión esencial, lo que quiere decir que va a traer múltiples peculiaridades nuevas y actualizaciones, como otras muchas peculiaridades nuevas, sin las mejoras de desempeño que que todos aguardamos. Si es un fan, puede localizar más información técnica en el lugar oficial de PHP 8 en este link.

Debido a los cambios esenciales, es muy posible que sus scripts existentes precisen ciertos ajustes para ejecutarse apropiadamente en PHP 8, mas no se preocupe (tampoco se apresure): si se ha mantenido actualizado con las últimas versiones, debería hacerlo. no sea demasiado. Tenga presente que la mayor parte de los cambios y las funciones obsoletas se efectuaron ya antes de PHP siete.

Índice

    Cambios y novedades en PHP 8

    Lo que hallamos excelente y nos agradaría compartir con es que PHP 8 asimismo trae una serie de peculiaridades nuevas, como el compilador JIT, géneros de unión y nuevos atributos. Vamos a entrar en eso en esta nota. ¡Comencemos!

    Compilador JIT

    El compilador JIT (Just In Time o bien "Just in Time") promete esenciales mejoras de desempeño, si bien no siempre y en toda circunstancia se aplicaría en el contexto de las aplicaciones web, mas podría traer ciertos cambios positivos si se emplea apropiadamente. JIT es una técnica que compila fragmentos de código conforme se ejecuta para poder emplear una versión precompilada del script. Piense en ello como una versión en caché de una parte de su código.

    El compilador PHP 8 JIT tiene un monitor que monitorea su código mientras que se ejecuta. Si este monitor advierte unas partes del código que se están ejecutando reiteradamente, las marca como "almacenables en caché" conforme con su frecuencia de ejecución. Estos fragmentos de código de empleo usual se compilan en un código de máquina optimado y se utilizan sobre la marcha en vez del código real, lo que daría como resultado que las aplicaciones demasiado pesadas ganen tiempo de ejecución y carga del servidor.

    Tipos de conexión

    Dada la naturaleza de PHP, existen muchos casos en los que los modelos de unión pueden resultar útiles. Las clases de unión son un mecanismo a través de el que puede detallar diferentes tipos para exactamente la misma variable, exactamente el mismo factor de una función o bien como resultado devuelto. Un caso sería:

    public function test(Test|Bar $input): int|float;

    Argumentos nombrados

    Los razonamientos con nombre o bien los razonamientos con nombre dejan que se pasen valores a una función con el valor detallado para eludir la consideración del orden, y asimismo se pueden suprimir otros factores.

    function test(string $a, string $b, ?string $c = null, ?string $d = null) 
    { /* … */ }
    test(
    b: 'value b', 
    a: 'value a', 
    d: 'value d',
    );

    Atributos

    Los atributos, generalmente conocidos como anotaciones, dan una forma veloz de añadir metadatos a las clases sin examinar y examinar docblocks. PHP 8 le deja detallar atributos y comentarios sin recurrir a bloques de comentarios.

    use AppAttributesExampleAttribute;
    
    #[ExampleAttribute]
    class Test
    {
    #[ExampleAttribute]
    public const Test="test";
    
    #[ExampleAttribute]
    public $x;
    
    #[ExampleAttribute]
    public function test(#[ExampleAttribute] $bar) { }
    }

    Puede localizar información completa sobre los atributos de PHP en este link.

    Expresión de coincidencia

    Puede llamar a match-expression o bien "match-expression", el hermano mayor de la expresión: "switch" (la nueva expresión es "match"), y puede devolver valores no declarados, conjuntar condiciones y utilizar comparaciones de tipos estrictas como ver en este fragmento de código:

    $result = match($input) {
    0 => "hello",
    '1', '2', '3' => "world",
    };

    Promoción inmobiliaria constructores

    La extensión de la propiedad del constructor se emplea para crear objetos de valor y objetos de trasferencia de datos. En vez de detallar las propiedades de la clase PHP, ahora puede reunirlas en una. Lo que acostumbrabas a hacer en el pasado:

    class Money 
    {
    public Currency $currency;
    
    public int $amount;
    
    public function __construct(
    Currency $currency,
    int $amount,
    ) {
    $this->currency = $currency;
    $this->amount = $amount;
    }
    }

    Ahora puedes hacerlo así:

    class Money 
    {
    public function __construct(
    public Currency $currency,
    public int $amount,
    ) {}
    }

    Nuevo retorno "estático"

    Aunque ya se pudo devolver "static", esto no se consideró una devolución válida. Ahora con PHP 8. Aguardamos que esta característica sea útil para muchos desarrolladores.

    class TestA
    {
    public function test(): static
    {
    return new static();
    }
    }

    Chico mixto

    Con el nuevo tipo mixto, puede ahorrar bastante tiempo con la función "mixta" asignando valores como Array, Bool, Callable, Int, Float, Object, Resource y String. El tipo "mixto" asimismo se puede emplear como factor o bien género de propiedad, no solo como un género de retorno de un valor. Solo tenga presente que "mixto" ya contiene "nulo", con lo que conseguirá un fallo de esta clase si lo emplea. Si esto le sucede a , ya sabe dónde buscar.

    // Fatal error: Mixed types cannot be nullable, null is already part of the mixed type.

    Te puede Interesar  Nicola Mostallino: "WordPress ha evolucionado, es una herramienta robusta y de código abierto que se adapta muy bien a los cambios"

    Herencia con métodos privados

    En versiones precedentes, PHP aplicaba exactamente las mismas comprobaciones de herencia a los métodos públicos, protegidos y privados. Este comportamiento ha alterado en PHP 8, con lo que estas comprobaciones de herencia ya no se efectúan para métodos privados. El empleo de la "función privada final" tampoco tenía sentido, con lo que ahora se activa una advertencia de PHP como la que se muestra ahora.

    Warning: Private methods cannot be final as they are never overridden by other classes

    Cartas débiles

    Después de la integración en la versión de PHP siete.4, los mapas enclenques en PHP 8 dejan el almacenaje de referencias a objetos sin que sean descartados por el "colector de basura". Esto probablemente va a ayudar a dirigir la memoria empleada por el servidor de forma más eficaz al guardar en caché los objetos.

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

    ":: class" está tolerado en objetos

    Una característica nueva, pequeña, mas tal vez útil, es que ahora es posible utilizar ":: class" en objetos en vez de tener que utilizar get_class () en ellos. Lo mejor es que marcha de exactamente la misma forma que get_class ().

    $test = new Test();
    var_dump($test::class);

    Captura excepcional

    Antes de la llegada de PHP, si deseaba advertir una salvedad, primero debía guardarla en una variable. Puede suprimir este paso con "Atrapas no grabadas".

    Antes:

    try {
    // Algo anduvo mal
    } catch (MiExcepcion $exception) {
    Log::error("Algo anduvo mal");
    }

    Ahora:

    try {
    // Algo anduvo mal
    } catch (MiExcepcion) {
    Log::error("Algo anduvo mal");
    }

    Última comida

    Puede utilizar una coma (",") al llamar a una función en versiones precedentes de PHP, mas ahora se puede utilizar al final de la lista de factores. En PHP 8 ahora puede hacer esto:

    public function(
    string $parameterA,
    int $parameterB,
    Test $objecttest,
    ) {}

    Nueva función "str_contains"

    Para acotar si una cadena contiene una cadena o bien texto, ya no es preciso emplear la función "strpos". Con "str_contains" marcha así:

    if (str_contains('string con muchas palabras', 'palabra')) { /* … */ }

    Nueva función fdiv

    Te has encontrado con la salida "Nan" en más de una ocasión. La función "fdiv" es afín a las funciones "fmod" y también "intdiv", mas con la diferencia de que deja la división por "0".

    Los "fallos fatales" de PHP ya no se pueden ocultar

    Si actualiza su servidor a PHP 8, posiblemente este cambio revele fallos que estaban ocultos ya antes de la implementación.

    Si esto afecta su aplicación, puede configurar su servidor PHP con "display_errors = off" ya antes de entrar en producción.

    Precedencia concatenada

    Si bien ya estaba obsoleto en la versión siete.4 de PHP, este cambio ahora va a entrar en vigencia por siempre y si escribe algo como esto:

    echo "sum: " . $a + $b;

    PHP 8 lo interpretará así:

    echo "sum: " . ($a + $b);

    Símbolo aritmético

    En versiones precedentes, los operadores aritméticos se podían utilizar en matrices y objetos, mas esto ya no es posible y se produce un fallo "TypeError".

    Lo que ya no está en PHP 8

    Cuando se desarrolló la versión PHP siete, se anunció que muchos recursos existentes que estaban desactualizados desaparecerían pronto, con lo que hicimos esta lista para ti con las "bajas" (suena mal, mas a los programadores nos agrada emplearlo Word "obsoleto") sufrido en esta nueva versión: PHP siete.2, PHP siete.3 y PHP siete.4.

    ¿Debo actualizar mi servidor a PHP 8?

    La recomendación es que todavía no lo hagas. Ha habido cambios esenciales entre la última versión de PHP siete y la nueva versión de PHP 8 que cuando menos lo forzarán a efectuar ciertos cambios en sus scripts en producción, y no está convencido de que esté listo para rehacer ciertos de ellos. inconvenientes que brotan de ella.

    ACTUALIZACIÓN ENERO 2021: Tras pasar las pruebas de desempeño y seguridad en nuestro laboratorio, PHP 8 ahora está libre en nuestros planes de alojamiento y puede empezar a emplearlo inmediatamente. Te contamos más sobre la introducción en esta nota: PHP 8 está libre en nuestros planes de hosting;).

    En WNPower, nos encanta alojar sitios y los cuidamos todo el tiempo. Somos entusiastas de PHP, WordPress y tenemos cientos y cientos de herramientas para asistirlo a trabajar en un ambiente considerablemente más simple que cualquier otro conocido.

    Descubra nuestro Hospedaje de aeronaves con descuentos singulares acá.

    Si te agradó esta nota, compártela. ¡Te vamos a estar más que agradecidos! ¡Hasta la proxima vez!

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestra web. Si sigues utilizando este sitio asumiremos que estás de acuerdo Mas Información