Nakon godinu dana razvoja izdanje programskog jezika . Nova grana uključuje niz novih značajki, kao i nekoliko promjena koje narušavaju kompatibilnost.
Ključ u PHP 7.4:
- - svojstva klase sada mogu uključivati deklaracije tipa, na primjer:
klasa Korisnik {
public int $id;
javni niz $name;
} - 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;}”);
- "??=" 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 očuvanje hijerarhije nasljeđivanja tipova u izvedenim povratnim tipovima ili mogućnost preokretanja hijerarhije izvornih tipova u izvedenim tipovima argumenata ( 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”, izvršiti zamjenu postojećih nizova pri definiranju novog niza;
$dijelovi = ['jabuka', 'kruška'];
$voće = ['banana', 'naranča', …$dijelovi, 'lubenica'];
// ['banana', 'naranča', 'jabuka', 'kruška', 'lubenica']; - vizualni prikaz velikih brojeva s graničnicima u numeričkim literalima (1_000_000_00);
- Podrška , koji vam omogućuju da zadržite referencu na objekt, ali ne blokirate sakupljač smeća od brisanja pridruženog objekta;
- Novi 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 ;
- Dodana podrška za predučitavanje predmemorije objektnog koda. Dodan parametar za podešavanje
, 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;
proc_open(['php', '-r', 'echo "Hello World\n";'], $deskriptori, $pipes);
// 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 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().
Izvor: opennet.ru
