PHP8: ¡Eche un vistazo a las nuevas funciones!

php8

Eche un vistazo a las nuevas funciones de PHP8

Historia de PHP

PHP no siempre fue tan impresionante como lo es hoy (con PHP8). En el pasado, todo era desordenado y no se comparaba en absoluto con los lenguajes fuertemente tipados. Pero era lo suficientemente versátil como para dominar la web. Otros lenguajes surgen y amenazan el dominio PHP en el desarrollo de aplicaciones web. Justo antes de PHP7, mucha gente creía que PHP ya estaba muerto.

Aparece PHP7 y cambia todo lo que mejora enormemente el rendimiento. Presentando tipos y otras características. Ahora es el momento de que PHP8 crezca y continúe con el legado de PHP.

PHP8


PHP8 es una actualización importante del popular lenguaje dinámico para la programación web del lado del servidor. Ahora está disponible como versión de producción, con tipos de unión, argumentos con nombre, atributos y compilación Just-In-Time.

 

¿Cuáles son las nuevas funciones de brillo en PHP8?

Argumentos nombrados

Ahora ha nombrado argumentos que le permiten especificar solo los argumentos necesarios y omitir los opcionales. De esta manera, los argumentos también son independientes del orden y están auto documentados. Aquí hay un ejemplo de la función htmlspecialchars que tiene algunos argumentos opcionales:

# htmlspecialchars signature
htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = TRUE ]]] ) : string# you can call it like this
htmlspecialchars($string, double_encode: false);

 

Atributos

Utilice datos estructurados con la sintaxis nativa de PHP en lugar de anotaciones PHPDoc. Dice así:

class PostsController
{
    #[Route(“/api/posts/{id}”, methods: [“GET”])]
    public function get($id) { /* … */ }
}

 

Constructor de promoción de propiedades

Una forma más limpia de definir e inicializar propiedades. De manera más sucinta, con menos código pero aún legible, puede configurar las propiedades de la clase pasando las variables, con el mismo nombre, por argumento al constructor. Vea el siguiente ejemplo:

# use this
class Point {
  public function __construct(
    public float $x = 0.0,
    public float $y = 0.0,
    public float $z = 0.0,
  ) {}
}# instead of this
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;
  }
}

 

Tipos de unión

Con PHP7 puede combinar tipos con PHPDoc. Ahora PHP8 lo admite de forma nativa. Creo que esta nueva función es muy útil porque no me gusta PHPDoc porque, en mi opinión, hace que el código sea más difícil de leer. Así es como funciona:

public function __construct(
    private int|float $number
  ) {}
}

new Number('NaN'); // TypeError

 

Expresión de coincidencia

Se agrega una capacidad de expresión de coincidencia, similar al conmutador pero con una semántica más segura y la capacidad de devolver valores.

Es una expresión para que pueda almacenarla en una variable o devolverla. Solo admite expresiones de una sola línea y no es necesario un salto; declaración. Esto en No estoy seguro de ningún uso real que pueda darle, pero estoy seguro de que será útil en el futuro.

echo match (8.0) {
  '8.0' => "Oh no!",
  8.0 => "This is what I expected",
};
//> This is what I expected

 

Operador de seguridad nula

Con esto, ya no necesita verificar cada elemento en una cadena de llamadas. Cuando falla la evaluación de un elemento, las ejecuciones de toda la cadena se abortan y se evalúan como nulas. Ahora no es necesario comprobar si existe el elemento de la cadena:

$country = $session?->user?->getAddress()?->country;

 

Cadena más sana para comparaciones de números

Cuando se compara con una cadena numérica, PHP8 usa una comparación de números. De lo contrario, convierte el número en una cadena y utiliza una comparación de cadenas.

# PHP 7
0 == 'foobar' // true# PHP 8
0 == 'foobar' // false

 

Errores de tipo coherentes para funciones internas

La mayoría de las funciones internas ahora arrojan una excepción de error si falla la validación de los parámetros.

# PHP 7
strlen([]); // Warning: strlen() expects parameter 1 to be string, array given

array_chunk([], -1); // Warning: array_chunk(): Size parameter expected to be greater than 0# PHP 8
strlen([]); // TypeError: strlen(): Argument #1 ($str) must be of type string, array given

array_chunk([], -1); // ValueError: array_chunk(): Argument #2 ($length) must be greater than 0

Y mucho más

El rendimiento y el manejo de errores también se mejoraron y los resultados parecen prometedores. No puedo esperar para poner mis manos en él.
PHP es cada vez mejor a medida que envejece. Hay mucho más en PHP8 que necesito probar y encontrar cómo será útil en el mundo real. Pero por lo que ya veo, parece prometedor y me enorgullece trabajar con PHP.

Recent Post