Dopu un annu di sviluppu prisentatu liberazione di lingua di prugrammazione PHP 7.4. U novu ramu include una seria di funzioni novi, è ancu parechji cambiamenti chì rompenu a cumpatibilità.
Proprietà Typed - E proprietà di classi ponu avà include dichjarazioni di tipu, per esempiu:
Classe User {
public int $id;
stringa publica $name;
}
Abbreviatu sintassi per definisce e funzioni "fn (parameter_list) => expr" cù ubligatoriu di u scopu per valore. Per esempiu, "fn($x) => $x + $y" hè analogu à "$fn2 = function ($x) use ($y) {return $x + $y;}");
Operatore di assignazione di stenografia "??=" chì pò esse usatu per definisce un valore predeterminatu ("a ??= b" hè simile à "a = a ?? b", se "a" hè definitu u so valore hè almacenatu, è s'ellu ùn hè micca definitu. hè attribuitu u valore "b");
Limitatu uppurtunità priservà a ghjerarchia di l'eredi di i tipi in i tipi di ritornu derivati, o a capacità di riversà a ghjerarchia di i tipi originali in i tipi di argumenti derivati (covarianza u tipu di ritornu è u tippu di argumentu contravarianza). I seguenti custruzzioni ponu avà esse aduprati in PHP:
classe A {}
a classe B si estende A {}
pruduttore di classa {
metudu di funzione publica (): A {}
}
class ChildProducer estende Producer {
metudu di funzione publica (): B {}
}
Operatore di decompressione in arrays "...$var", permettendu eseguisce a sustituzione di array esistenti quandu definisce un novu array;
uppurtunità rapprisintazioni visuale di grandi numeri cù delimitatori in letterali numerichi (1_000_000_00);
sustegnu ligami debuli, chì permettenu di mantene una riferenza à un ughjettu, ma ùn impediscenu micca u cullettore di basura per sguassà l'ughjettu assuciatu;
Novu miccanisimu serializazione di l'ughjettu (una cumminazione di Serializable è __sleep()/__wakeup()), chì hà rimpiazzatu l'interfaccia Serializable, chì serà deprecated;
// Ritorna un array chì cuntene tutti i stati di l'ughjettu;
funzione publica __serialize(): array;
// Ripristina u statu di un oggettu da un array
funzione publica __unserialize(array $data): void;
Hè permessu di lancià eccezzioni da un metudu __toString();
Aghjunghje supportu per precaricare a cache di codice di l'ughjettu. Paràmetru aghjustatu per a cunfigurazione opcache.preload, attraversu quale pudete specificà un script PHP chì serà compilatu è eseguitu quandu u servitore principia. Stu script pò carricà l'opcode d'altri schedari attraversu a so inclusione diretta o utilizendu a funzione opcache_compile_file () ;
A funzione crc32c aghjunta à l'estensione Hash per calculà i cuntrolli cù u polinomiu Castagnoli;
Added support to the password_hash() function for password hashing methods argon2i and argin2id, in l'implementazione di a biblioteca Sodium, se PHP hè custruitu senza libargon;
A funzione aghjunta mb_str_split (), simile à str_split (), ma chì opera micca cù byte ma cù pusizioni di caratteri in una stringa multi-byte;
A funzione strip_tags() hà avà a capacità di passà un array cù nomi di tag, i.e. invece di strip_tags($str, ' ') pudete avà specificà strip_tags ($str, ['a', 'p']);
proc_open() permette à l'operandi di esse listati in un array, invece di una stringa per eseguisce, è furnisce ancu redirezzione di filu è supportu per un descrittore di file null;
// cum'è 2>/dev/null o 2>nul in shell
proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);
L'estensioni Firebird/Interbase, Recode è WDDX sò escluse da a distribuzione basica. Queste estensioni sò avà distribuite attraversu PECL;
Trasferitu à a categuria anticu funzioni cum'è operatori ternari nidificati senza parentesi, accessu à elementi di array è stringhe cù parentesi curly ("$var{$idx}"), a funzione is_real () è casting à reale, utilizendu a keyword parent senza una classa parent, paràmetru allow_url_include configurazioni , usendu array_key_exists () nantu à l'uggetti.
E funzioni get_magic_quotes_gpc(), get_magic_quotes_runtime(), è
hebrevc (), convert_cyr_string (), money_format (), ezmlm_hash (), restore_include_path (), ldap_control_paged_result_response (), ldap_control_paged_result (), ReflectionType::__toString ().
Un avvirtimentu annantu à l'usu di una funzione obsoleta hè statu furnitu quandu pruvate di processà simboli sbagliati in funzioni
base_convert(), bindec(), octdec() è hexdec(), è quandu si specifica un mudellu senza stringa in mb_ereg_replace().