Diferencia entre revisiones de «PHP 8.1»
(No se muestran 6 ediciones intermedias del mismo usuario) | |||
Línea 1: | Línea 1: | ||
= Descripción = | = 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. | 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. | ||
Línea 22: | 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 29: | Línea 30: | ||
Las enumeraciones hacen que el código se lea mejor e impiden un estado inesperado de la aplicación. | 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 |
Revisión actual - 07: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