Pas një viti zhvillimi lëshimi i gjuhës së programimit Dega e re përfshin një numër veçorish të reja, si dhe disa ndryshime të papajtueshme.
Celës në PHP 7.4:
- — vetitë e klasës tani mund të përfshijnë deklaratat e tipit, për shembull:
Përdoruesi i klasës {
publik int $id;
vargu publik $name;
} - sintaksa e përkufizimit të funksionit "fn(parameter_list) => expr" me lidhje të fushëveprimit të vlerës. Për shembull, "fn($x) => $x + $y" është ekuivalente me "$fn2 = function ($x) use ($y) {return $x + $y;}");
- "??=", e cila mund të përdoret për të përcaktuar një vlerë të paracaktuar ("a ??= b" është e ngjashme me "a = a ?? b", nëse përcaktohet "a", vlera e saj ruhet, dhe nëse nuk përcaktohet, caktohet vlera e "b");
- E kufizuar ruajtja e hierarkisë së trashëgimisë së llojeve në llojet e vlerës së kthimit të derivuara prej tyre ose mundësia e transformimit të hierarkisë së llojeve origjinale në të kundërtën në llojet e argumenteve të derivuara ( lloji i kthimit dhe lloji i argumentit kundërvariancë). Konstruktet e mëposhtme tani mund të përdoren në PHP:
klasa A {}
klasa B shtrihet në A {}Prodhuesi i klasës {
metoda e funksionit publik(): A {}
}
klasa ChildProducer zgjeron Producerin {
metoda e funksionit publik(): B {}
} - Operatori i çpaketimit brenda vargjeve "...$var", kryej zëvendësimin e vargjeve ekzistuese kur përcakton një varg të ri;
$pjesë = ['mollë', 'dardhë'];
$fruta = ['banane', 'portokall', …$pjesë, 'shalqi'];
// ['banane', 'portokall', 'mollë', 'dardhë', 'shalqi']; - prezantim vizual i numrave të mëdhenj me ndarës në numrat literalë numerikë (1_000_000_00);
- Mbështetje , të cilat lejojnë që një referencë për një objekt të ruhet, por nuk bllokojnë heqjen e objektit të shoqëruar nga mbledhësi i mbeturinave;
- I ri serializimi i objektit (një kombinim i Serializable dhe __sleep()/__wakeup()), duke zëvendësuar ndërfaqen Serializable, e cila do të shpallet e vjetëruar;
// Kthen një varg që përmban të gjitha gjendjet e objektit;
funksioni publik __serialize(): varg;// Rikthen gjendjen e një objekti nga një varg
funksioni publik __unserialize(array $data): void; - Lejimi i hedhjes së përjashtimeve nga një metodë ;
- Është shtuar mbështetje për ngarkimin paraprak të memorjes së përkohshme të kodit të objektit. Është shtuar një parametër i ri për konfigurim.
, e cila ju lejon të specifikoni një skript PHP që do të kompilohet dhe do të ekzekutohet kur të fillojë serveri. Ky skript mund të ngarkojë opcodet e skedarëve të tjerë duke i përfshirë ato drejtpërdrejt ose duke përdorur funksionin opcache_compile_file(); - Funksioni crc32c është shtuar në zgjerimin Hash për llogaritjen e shumave të kontrollit duke përdorur polinomin Castagnoli;
- Funksioni password_hash() është përditësuar për të mbështetur metodat e hashimit të fjalëkalimeve argon2i dhe argin2id në implementimin e bibliotekës Sodium nëse PHP është ndërtuar pa libargon;
- U shtua funksioni mb_str_split(), i ngjashëm me str_split(), por që nuk vepron në bajt, por në pozicionet e karaktereve në një varg shumëbajtësh;
- Funksioni strip_tags() tani ju lejon të kaloni një varg emrash etiketash, d.m.th. në vend të strip_tags($str, ' ') tani mund të specifikoni strip_tags($str, ['a', 'p']);
- proc_open() lejon renditjen e operandëve në një varg në vend që të specifikojë një varg për t'u ekzekutuar, dhe gjithashtu zbaton aftësinë për të ridrejtuar rrjedhat dhe për të mbështetur një përshkrues të skedarëve null;
proc_open(['php', '-r', 'echo "Përshëndetje Botë\n";'], $përshkrues, $tuba);
// Si 2>&1 në shell
proc_open($cmd, [1 => ['tub', 'w'], 2 => ['ridrejtim', 1]], $tuba);// si 2>/dev/null ose 2>nul në shell
proc_open($cmd, [1 => ['tub', 'w'], 2 => ['null']], $tuba); - Zgjerimet Firebird/Interbase, Recode dhe WDDX janë hequr nga shpërndarja bazë. Këto zgjerime tani shpërndahen nëpërmjet PECL;
- Transferuar në kategorinë Karakteristika të tilla si operatorët ternorë të ndërthurur pa kllapa, qasja në elementët dhe vargjet e vargjeve duke përdorur kllapa kaçurrela ("$var{$idx}"), funksioni is_real() dhe kalimi në real, përdorimi i fjalës kyçe prind pa një klasë prind, opsioni i konfigurimit allow_url_include dhe përdorimi i array_key_exists() në objekte.
Funksionet get_magic_quotes_gpc(), get_magic_quotes_runtime() janë deklaruar të vjetruara.
hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().Ofroi një paralajmërim në lidhje me përdorimin e një veçorie të vjetëruar kur përpiqesh të përpunosh karaktere të pavlefshme në funksione.
base_convert(), bindec(), octdec() dhe hexdec(), dhe kur specifikohet një model jo-string në mb_ereg_replace().
Burimi: opennet.ru
