Despois dun ano de desenvolvemento versión da linguaxe de programación . A nova rama inclúe unha serie de novidades, así como varios cambios que rompen a compatibilidade.
Chave en PHP 7.4:
- - As propiedades de clase agora poden incluír declaracións de tipo, por exemplo:
usuario de clase {
público int $id;
cadea pública $nome;
} - sintaxe para definir funcións "fn(lista_parámetros) => expr" con unión de ámbito por valor. Por exemplo, “fn($x) => $x + $y” é análogo a “$fn2 = function ($x) use ($y) {return $x + $y;}”);
- "??=" que se pode usar para definir un valor predeterminado ("a ??= b" é semellante a "a = a ?? b", se se define "a" gárdase o seu valor, e se non se define asígnaselle o valor "b" );
- Limitado preservar a xerarquía de herdanza dos tipos nos tipos de retorno derivados ou a capacidade de invertir a xerarquía dos tipos orixinais nos tipos de argumentos derivados ( tipo de retorno e contravarianza do tipo de argumento). Agora pódense usar as seguintes construcións en PHP:
clase A {}
clase B esténdese A {}productor de clase {
método de función pública (): A {}
}
clase ChildProducer estende Producer {
método de función pública (): B {}
} - Operador de desempaquetado dentro das matrices “…$var”, realizar a substitución de matrices existentes ao definir unha nova matriz;
$partes = ['mazá', 'pera'];
$fritos = ['plátano', 'laranxa', …$partes, 'anguria'];
// ['plátano', 'laranxa', 'mazá', 'pera', 'anguria']; - representación visual de grandes números con delimitadores en literais numéricos (1_000_000_00);
- Apoiar , que permiten conservar unha referencia a un obxecto, pero non impiden que o colector de lixo elimine o obxecto asociado;
- Novo serialización de obxectos (unha combinación de Serializable e __sleep()/__wakeup()), que substituíu a interface Serializable, que quedará obsoleta;
// Devolve unha matriz que contén todos os estados do obxecto;
función pública __serialize(): matriz;// Restaura o estado dun obxecto dunha matriz
función pública __unserialize(array $data): void; - Permítese lanzar excepcións dun método ;
- Engadido soporte para cargar previamente a caché de código obxecto. Parámetro engadido para a configuración
, a través do cal pode especificar un script PHP que se compilará e executará cando se inicie o servidor. Este script pode cargar o código de operación doutros ficheiros mediante a súa inclusión directa ou mediante a función opcache_compile_file(); - Engadiuse a función crc32c á extensión Hash para calcular sumas de verificación usando o polinomio de Castagnoli;
- Engadido soporte á función password_hash() para os métodos de hash de contrasinais argon2i e argin2id, na implementación da biblioteca Sodium, se PHP está construído sen libargon;
- Engadiuse a función mb_str_split(), similar a str_split(), pero que opera non con bytes senón con posicións de caracteres nunha cadea de varios bytes;
- A función strip_tags() agora ten a capacidade de pasar unha matriz con nomes de etiquetas, é dicir. en lugar de strip_tags($str, ' ') agora podes especificar strip_tags($str, ['a', 'p']);
- proc_open() permite que os operandos sexan listados nunha matriz en lugar de executar unha cadea, e tamén proporciona redirección de fíos e soporte para un descritor de ficheiro nulo;
proc_open(['php', '-r', 'echo "Ola mundo\n";'], $descriptores, $pipes);
// Como 2>&1 no shell
proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]], $pipes);// como 2>/dev/null ou 2>nul no shell
proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes); - As extensións Firebird/Interbase, Recode e WDDX están excluídas da distribución básica. Estas extensións distribúense agora a través de PECL;
- Trasladado a categoría características como operadores ternarios anidados sen parénteses, acceso a elementos da matriz e cadeas usando chaves ("$var{$idx}"), a función is_real() e a conversión a real, usando a palabra clave pai sen unha clase pai, o parámetro allow_url_include configuracións , usando array_key_exists() en obxectos.
As funcións get_magic_quotes_gpc(), get_magic_quotes_runtime() e
hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().Proporcionouse unha advertencia sobre o uso dunha función obsoleta ao intentar procesar símbolos incorrectos nas funcións
base_convert(), bindec(), octdec() e hexdec(), e ao especificar un patrón que non sexa de cadea en mb_ereg_replace().
Fonte: opennet.ru
