Nakon godinu dana razvoja predstavio izdanje programskog jezika PHP 7.4. Nova grana uključuje niz novih značajki, kao i nekoliko promjena koje narušavaju kompatibilnost.
Tipizirana svojstva - svojstva klase sada mogu uključivati deklaracije tipa, na primjer:
klasa Korisnik {
public int $id;
javni niz $name;
}
Skraćeno sintaksa za definiranje funkcija “fn(parameter_list) => expr” s opsegom vezanjem vrijednosti. Na primjer, “fn($x) => $x + $y” analogno je “$fn2 = funkcija ($x) koristi ($y) {povratak $x + $y;}”);
Stenografski operator dodjele "??=" koji se može koristiti za definiranje zadane vrijednosti ("a ??= b" je sličan "a = a ?? b", ako je "a" definiran njegova vrijednost se pohranjuje, a ako nije definiran dodjeljuje se vrijednost "b" );
Ograničeno prilika očuvanje hijerarhije nasljeđivanja tipova u izvedenim povratnim tipovima ili mogućnost preokretanja hijerarhije izvornih tipova u izvedenim tipovima argumenata (kovarijanca povratni tip i kontravarijacija tipa argumenta). Sljedeće konstrukcije sada se mogu koristiti u PHP-u:
klasa A {}
klasa B proširuje A {}
klasa producent {
metoda javne funkcije(): A {}
}
class ChildProducer extends Producer {
metoda javne funkcije(): B {}
}
Raspakiranje operatora unutar polja “…$var”, dopuštajući izvršiti zamjenu postojećih nizova pri definiranju novog niza;
Prilika vizualni prikaz velikih brojeva s graničnicima u numeričkim literalima (1_000_000_00);
podrška slabe karike, koji vam omogućuju da zadržite referencu na objekt, ali ne blokirate sakupljač smeća od brisanja pridruženog objekta;
Novi mehanizam serijalizacija objekta (kombinacija Serializable i __sleep()/__wakeup()), koja je zamijenila Serializable sučelje, koje će biti zastarjelo;
// Vraća niz koji sadrži sva stanja objekta;
javna funkcija __serialize(): niz;
// Vraća stanje objekta iz niza
javna funkcija __unserialize(array $data): void;
Dopušteno bacanje iznimaka iz metode __toString();
Dodana podrška za predučitavanje predmemorije objektnog koda. Dodan parametar za podešavanje opcache.naprezanje, putem kojeg možete odrediti PHP skriptu koja će se kompajlirati i pokrenuti kada se poslužitelj pokrene. Ova skripta može učitati operacijski kod drugih datoteka njihovim izravnim uključivanjem ili korištenjem funkcije opcache_compile_file();
Dodana funkcija crc32c proširenju Hash za izračunavanje kontrolnih zbrojeva pomoću Castagnolijevog polinoma;
Dodana podrška funkciji password_hash() za metode raspršivanja lozinki argon2i i argin2id, u implementaciji biblioteke Natrij, ako je PHP izgrađen bez libargona;
Dodana funkcija mb_str_split(), slična str_split(), ali ne radi s bajtovima nego s položajima znakova u višebajtnom nizu;
Funkcija strip_tags() sada ima mogućnost proslijeđivanja polja s nazivima oznaka, tj. umjesto strip_tags($str, ' ') sada možete navesti strip_tags($str, ['a', 'p']);
proc_open() omogućuje da operandi budu ispisani u nizu, umjesto pokretanja niza, i također pruža preusmjeravanje niti i podršku za null deskriptor datoteke;
// Kao 2>&1 u ljusci
proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]], $pipes);
// poput 2>/dev/null ili 2>nul u ljusci
proc_open($cmd, [1 => ['cijev', 'w'], 2 => ['null']], $cijevi);
Ekstenzije Firebird/Interbase, Recode i WDDX isključene su iz osnovne distribucije. Ova proširenja se sada distribuiraju putem PECL-a;
Prebačeno u kategoriju zastario značajke kao što su ugniježđeni ternarni operatori bez zagrada, pristup elementima niza i nizovima pomoću vitičastih zagrada (“$var{$idx}”), funkcija is_real() i pretvaranje u real, korištenje nadređene ključne riječi bez nadređene klase, konfiguracije parametara allow_url_include , koristeći array_key_exists() na objektima.
Funkcije get_magic_quotes_gpc(), get_magic_quotes_runtime() i
hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().
Omogućeno je upozorenje o korištenju zastarjele značajke prilikom pokušaja obrade netočnih simbola u funkcijama
base_convert(), bindec(), octdec() i hexdec(), i kada specificirate uzorak koji nije string u mb_ereg_replace().