UA-51298262-10 Skip to main content
WordPress

Características y mejoras de PHP 8 en WordPress

By febrero 8, 2021diciembre 7th, 2022No Comments

¿Conoces las características y mejoras de PHP 8 en WordPress? En noviembre de 2020 los desarrolladores de PHP dieron a conocer la versión más reciente del lenguaje de programación más empleado en la web. Esta nueva versión PHP 8 viene con cambios notables relacionados con la seguridad, rapidez y rendimiento.

 

 

En este artículo de Ayuda Hosting les mostraremos las características y mejoras de PHP 8 en WordPress, uno de los mejores sistemas de gestión de contenidos (CMS) en la web.

Veamos a continuación, cuáles son esas características y mejoras de PHP 8.

 

Características y mejoras de PHP 8 en WordPress

Características y mejoras de PHP 8 en WordPress

Toda la información que proporcionaremos acerca de los Request For Comments (RFC) o las propuestas que pueden hacer los programadores y desarrolladores de esta herramienta, pueden ser consultadas en la página oficial de PHP 8. En suma, todas estas propuestas han conformado lo que a partir del 26 de noviembre de 2020 se conoce como PHP 8.

 

Características y mejoras de PHP 8 en WordPress

Compilador JIT

Una de las características más importantes que encontraremos en esta nueva versión de PHP es el compilador JIT mejor conocido como Just in Time Compiler. JIT es una función que estuvo pendiente por ser incorporada en la versión 7.4 de PHP. Esta nueva función introduce una innovación importante en este lenguaje de programación que aumenta su rendimiento.

PHP viene con un mecanismo virtual conocido como Zend VM. Este dispositivo virtual se ocupa de la lectura y ejecución del código PHP. Sin embargo, se requiere que Opcode pueda leer y traducir el código de tal manera que Zend VM lo pueda entender.

Es por esta razón que en la ejecución de PHP intervienen dos factores:

  • Un elemento traductor (Opcode).
  • Un mecanismo que lo lea y ejecute (Zend VM).

Este proceso puede ser acelerado si Opcode emplea OPCache, o lo que es lo mismo, Opcode Cache. Opcode Cache se encarga de almacenar los datos de una compilación para evitar volver a realizarla nuevamente.

Este mecanismo hace que la velocidad de ejecución aumente haciendo innecesario el traductor que envía la información a Zend VM. Esto favorece enormemente la ejecución de las aplicaciones que consumen CPU en exceso.

Esta opción de PHP viene desactivada por defecto, sin embargo, podemos habilitarla muy fácilmente mediante la modificación del archivo php.ini del cPanel de nuestro plan de hosting.

 

Características y mejoras de PHP 8 en WordPress

Union Types o Tipos de unión

Esta nueva versión establece como válidos dos tipos de unión especiales, cosa que hasta ahora no admitían las versiones anteriores:

  • Type null, utilizando la sintaxis ?Type
  • Array Traversable, utilizando iterable type

Además, como otra opción, se empleaban anotaciones phpdoc como las del ejemplo del RFC que transcribimos a continuación:

 

class Number {
    /**
     * @var int|float $number
     */
    private $number;
    /**
     * @param int|float $number
     */
    public function setNumber($number) {
        $this->number = $number;
    }
    /**
     * @return int|float
     */
    public function getNumber() {
        return $this->number;
    }
}

 

En open source los tipos de unión y las librerías de PHP se emplean con mucha frecuencia. Esta nueva versión de PHP viene con soporte para los Union Types en las firmas de las funciones. Esto permite ahorrar en códigos.

Los tipos de unión pueden especificarse empleando la sintaxis T1 | T2 | como veremos en el siguiente ejemplo:

 

class Number {
    private int|float $number;
    public function setNumber(int|float $number): void {
        $this->number = $number;
    }
    public function getNumber(): int|float {
        return $this->number;
    }
}

 

Sin embargo, existen algunas limitaciones a pesar de admitir todas las clases de unión:

  • Void type. El tipo void nos señala que para una función no existe valor de retorno. Es por esto que no es posible que pueda ser parte de una unión.
  • Nullableunion types. Como parte de las uniones, el tipo nulo puede ser admitido. Sin embargo, no es posible emplearlo de forma independiente ni combinar los tipos de unión con la notación de tipos que acepten valores NULL? T. Esto significa que no se permite emplear T1 | T2, T1 |? T2? (T1 | T2), sino que debe ser T1 | T2 | null.
  • Pseudo-tipo false: PHP en su nueva versión dispone de un soporte para el pseudo-tipo false, aunque no es posible utilizarlo como un tipo independiente.
  • Tipos redundantes y duplicados. Sin que se realice la carga de clases, es posible detectar tipos redundantes o duplicados que generarán error en el tiempo de compilación.

 

Match expression o Expresión de coincidencia

Esta nueva versión también viene con una extensión parecida a switch. Sin embargo, existen tres diferencias:

  • Es más segura. Se puede realizar una comparación de valores más estricta (===), en vez de la comprobación de igualdad de las expresiones switch (==).
  • Devuelve valores. Las expresiones de coincidencia o match expression sí devuelven valores, cosa que no hacen las expresiones switch.

 

Características y mejoras de PHP 8 en WordPress

Attributes o Atributos

En esta nueva versión de PHP, podremos añadir atributos. En otras palabras, anotaciones o meta datos sin necesidad de emplear bloques de anotaciones o comentarios.

Para hacerlo, necesitamos crear un atributo. Es como si fuésemos a añadir una clase mediante el formato << >> reutilizando los tokens T_SL y T_SR. Esto, de la misma forma en la que se ha establecido en el RFC. Un ejemplo del uso de estos atributos podemos apreciarlo a continuación:

 

namespace My\Attributes;
use PhpAttribute;
<<PhpAttribute>>
class SingleArgument
{
    public $value;
    public function __construct(string $value)
    {
        $this->value = $value;
    }
}

 

Weak Maps o Mapas débiles

Otra RFC son los Weak Maps que se incluyen en esta nueva versión de PHP. Están basados en los ya existentes Weak References de la versión 7.4 de PHP. Estos nos permiten construir un mapa de valores arbitrarios o mapa de objetos sin que el garbage collector los elimine.

Los objetos contenidos en un Weak Maps pueden ser acumulados como basura. Esto resulta importante cuando tenemos librerías dedicadas a realizar el cacheo de objetos. Esta es una forma de obtener más memoria de manera eficiente cuando ya no exista ningún tipo de referencia hacia ellos.

A continuación, presentamos un ejemplo de Weak Maps tomado del RFC para el resultado de cálculo:

 

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

 

Características y mejoras de PHP 8 en WordPress

Constructor Property Promotion

Esta función existente en la nueva versión de PHP, nos permite abreviar los códigos que construimos por versiones más simplificadas. Este nuevo RFC nos va a permitir disponer de un código más sencillo, fácil de leer y más limpio.

De acuerdo con esa RFC podemos pasar de la siguiente forma:

 

class Point {
    public float $x;
    public float $y;
    public float $z;
    public function __construct(
        float $x = 0.0,
        float $y = 0.0,
        float $z = 0.0,
    ) {
        $this->x = $x;
        $this->y = $y;
        $this->z = $z;
    }
}

 

A la siguiente:

 

class Point {
    public function __construct(
        public float $x = 0.0,
        public float $y = 0.0,
        public float $z = 0.0,
    ) {}
}

Ambas fórmulas son equivalentes. Sin embargo, una de ellas es más simple y fácil de entender.

 

Características y mejoras de PHP 8 en WordPress

Empleo de ::class en los objetos

Una manera de simplificar los códigos es aplicando en forma directa la notación de PHP ::class en vez de get_class().

 

Características y mejoras de PHP 8 en WordPress

Stringable interface o interfaz para cadenas

La interface para cadenas automática es una de las mejoras introducidas en PHP 8. Esta mejora incluida para las clases que aplican el método __toString(), evita que tengamos que hacerlo manualmente.

 

Características y mejoras de PHP 8 en WordPress

Type errors o errores de tipo

Antes de esta actualización de PHP solo aquellas funciones incluidas por los usuarios devolvían los TipeErrors. Estas funciones arrojaban avisos de valor null. Con esta versión de PHP casi todas las funciones internas pueden producir TipeErrors.

 

Características y mejoras de PHP 8 en WordPress

Named arguments o argumentos de nombre

Esta función permite transferir datos de entrada a cualquier función que tenga el nombre del parámetro en lugar de hacerlo usando su posición.

Como consecuencia de esto, los Named arguments se independizan del orden. Además, permite saltar los valores por defecto de manera aleatoria.

A continuación, un ejemplo de argumentos de nombre:

 

// Utilizando argumentos de posición:
array_fill(0, 100, 50);
// Utilizando argumentos de nombre:
array_fill(start_index: 0, num: 100, value: 50);

 

Es de esta manera que el orden establecido para los argumentos no resulta decisivo ya que puede ser utilizado en cualquier otra localización:

 

array_fill(value: 50, num: 100, start_index: 0);

 

Adicionalmente, podemos combinar argumentos de nombre con los de posición o con cualquiera que necesitemos, sin tomar en cuenta el orden en el que los establezcamos:

 

htmlspecialchars($string, double_encode: false);
// Same as
htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);

 

Características y mejoras de PHP 8 en WordPress

¿Qué ocurrirá con la versión de PHP que tenemos actualmente?

Es importante mantener nuestro software actualizado. Por lo general, cuando un software es actualizado se corrigen errores y se introducen mejoras en la seguridad.

Por lo tanto, no es recomendable insistir en trabajar con versiones obsoletas de PHP. Podremos ver que en el caso de la versión 7.1 de PHP ya no se ofrece soporte y la versión 7.2 ya se dio por finalizada. Ni hablar de las versiones 5.5, 5.4 y más antiguas.

Si estamos empleando versiones más actualizadas como las versiones 7.3 o 7.4, no tenemos por qué preocuparnos aún. Estas, por el momento tienen soporte, sin embargo no debemos conservarlas por mucho tiempo.

Debemos tener en cuenta que si deseamos cambiar la versión con la que funciona nuestra página web, algunas de las características de esta nueva versión pueden no resultar compatibles. Sin embargo, si hemos mantenido el código actualizado, no deberíamos tener mayor problema.

También debemos recordar que para cambiar a la nueva versión de PHP, basta con ingresar a cPanel y hacer algunos clics. Adicionalmente, si tenemos muchas aplicaciones en el mismo hosting y resulta que alguna de ellas no resulte compatible con la nueva versión, podemos regresar a la versión que necesitemos según sea el caso.

Esperamos que este artículo sobre las características y mejoras de PHP 8 en WordPress, les haya resultado útil. Más información sobre este y otros temas en Ayuda Hosting.

Ayuda Hosting

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies