Diferencia entre revisiones de «PHP 8.1»

De Wiki Proyectos Beta
Ir a la navegación Ir a la búsqueda
([feat] Add information about PHP 8.1 - new algorithm hashes)
 
(No se muestran 3 ediciones intermedias del mismo usuario)
Línea 23: Línea 23:


   function elige_carta(Palo $palo) {}
   function elige_carta(Palo $palo) {}
 
 
   elige_carta (Palo::Copas);
   elige_carta (Palo::Copas);
   elige_carta (Palo::Espadas);
   elige_carta (Palo::Espadas);
Línea 50: Línea 50:


Estos nuevos algoritmos de hashing son más rápidos que la mayoría de los algoritmos de hashing existentes en PHP. De hecho, algunas de las variantes de estos algoritmos hash son más rápidas que el rendimiento de la memoria RAM.
Estos nuevos algoritmos de hashing son más rápidos que la mayoría de los algoritmos de hashing existentes en PHP. De hecho, algunas de las variantes de estos algoritmos hash son más rápidas que el rendimiento de la memoria RAM.
== Nueva función array_is_list ==
Los arrays de PHP pueden contener claves tanto enteras como de cadena. Esto significa que puedes usarlos para varias cosas, incluyendo listas, tablas hash, diccionarios, colecciones, pilas, colas y mucho más. Incluso puede tener arrays dentro de arrays, creando arrays multidimensionales.
Se puede comprobar eficazmente si una entrada concreta es un array, pero no es tan fácil comprobar si le faltan desplazamientos de array, claves desordenadas, etc. En resumen, no puedes verificar rápidamente si un array es una lista.
La array_is_list() function comprueba si las claves de un array están en orden secuencial empezando por 0, y sin espacios. Si se cumplen todas las condiciones, devolverá true. Por defecto, también devuelve true para arrays vacíos.
=== Ejemplos ===
  // true array_is_list() ejemplos
  var_dump(array_is_list([]));                            // true
  var_dump(array_is_list([1, 2, 3]));                    // true
  var_dump(array_is_list(['gatos', 2, 3]));              // true
  var_dump(array_is_list(['gatos', 'perros']));          // true
  var_dump(array_is_list([0 => 'gatos', 'perros']));      // true
  var_dump(array_is_list([0 => 'gatos', 1 => 'perros'])); // true
 
  // false array_is_list() ejemplos
  var_dump(array_is_list([1 => 'gatos', 'perros']));              // as first key isn't 0
  var_dump(array_is_list([1 => 'gatos', 0 => 'perros']));        // keys are out of order
  var_dump(array_is_list([0 => 'gatos', 'duck' => 'perros']));    // non-integer keys
  var_dump(array_is_list([0 => 'gatos', 2 => 'perros']));        // gap in between keys

Revisión actual - 06:33 18 ago 2022

Descripción

PHP 8.1 trae novedades importantes, nuevas funciones y un rendimiento optimizado. Mejora la versión anterior y está disponible en su página oficial desde el 25 de noviembre de 2021.

Nuevas características

Enums

Enum para abreviar o "Enumeraciones", es un tipo enumerado que tiene un número fijo de posibles valores.

Imaginemos una baraja de cartas con oros, copas, espadas y bastos, siendo estos palos los cuatro fijos de la baraja.

Con Enum, los palos los podemos enumerar de este modo en PHP:

 enum Palo {
     case Copas;
     case Espadas;
     case Bastos;
     case Oros;
 }

Con Palo Enum, se puede aplicar tipos al aceptar o devolver un valor de palo de este modo:

 function elige_carta(Palo $palo) {}
 
 elige_carta (Palo::Copas);
 elige_carta (Palo::Espadas);
 elige_carta (Palo::Bastos);
 elige_carta (Palo::Oros);

Las enumeraciones hacen que el código se lea mejor e impiden un estado inesperado de la aplicación.

Propiedades Readonly

PHP 8.1 incluye soporte para propiedades readonly (solo lectura). Una vez declaradas solo pueden ser inicializadas una vez y no se puede modificar nunca su valor, porque si lo hacemos se produciría una excepción de error.

Un ejemplo sería el siguiente:

 class Test {
     public readonly string $Arsys;
     public function __construct(string $Arsys) {
         // Legal initialization.
         $this->Arsys= $Arsys;
     }
 }

Nuevos algoritmos hash

PHP 8.1 añade soporte para los algoritmos de hash MurmurHash3 y xxHash. No están diseñados para su uso criptográfico, pero aún así proporcionan una impresionante aleatoriedad, dispersión y unicidad de salida.

Estos nuevos algoritmos de hashing son más rápidos que la mayoría de los algoritmos de hashing existentes en PHP. De hecho, algunas de las variantes de estos algoritmos hash son más rápidas que el rendimiento de la memoria RAM.

Nueva función array_is_list

Los arrays de PHP pueden contener claves tanto enteras como de cadena. Esto significa que puedes usarlos para varias cosas, incluyendo listas, tablas hash, diccionarios, colecciones, pilas, colas y mucho más. Incluso puede tener arrays dentro de arrays, creando arrays multidimensionales.

Se puede comprobar eficazmente si una entrada concreta es un array, pero no es tan fácil comprobar si le faltan desplazamientos de array, claves desordenadas, etc. En resumen, no puedes verificar rápidamente si un array es una lista.

La array_is_list() function comprueba si las claves de un array están en orden secuencial empezando por 0, y sin espacios. Si se cumplen todas las condiciones, devolverá true. Por defecto, también devuelve true para arrays vacíos.

Ejemplos

 // true array_is_list() ejemplos
 var_dump(array_is_list([]));                            // true
 var_dump(array_is_list([1, 2, 3]));                     // true
 var_dump(array_is_list(['gatos', 2, 3]));               // true
 var_dump(array_is_list(['gatos', 'perros']));           // true
 var_dump(array_is_list([0 => 'gatos', 'perros']));      // true
 var_dump(array_is_list([0 => 'gatos', 1 => 'perros'])); // true 
 
 // false array_is_list() ejemplos 
 var_dump(array_is_list([1 => 'gatos', 'perros']));              // as first key isn't 0
 var_dump(array_is_list([1 => 'gatos', 0 => 'perros']));         // keys are out of order
 var_dump(array_is_list([0 => 'gatos', 'duck' => 'perros']));    // non-integer keys
 var_dump(array_is_list([0 => 'gatos', 2 => 'perros']));         // gap in between keys