Po metų plėtros programavimo kalbos leidimas . Naujoje šakoje yra daugybė naujų funkcijų, taip pat keletas pakeitimų, kurie pažeidžia suderinamumą.
Raktas PHP 7.4:
- - klasės savybės dabar gali apimti tipo deklaracijas, pavyzdžiui:
Class User {
viešasis int $id;
vieša eilutė $vardas;
} - sintaksė funkcijoms apibrėžti "fn(parameter_list) => expr" su apimties susiejimu pagal reikšmę. Pavyzdžiui, "fn($x) => $x + $y" yra analogiškas "$fn2 = funkcija ($x) use ($y) {return $x + $y;}");
- "??=", kuris gali būti naudojamas numatytajai reikšmei apibrėžti ("a ??= b" yra panašus į "a = a ?? b", jei "a" yra apibrėžtas, jos reikšmė išsaugoma, o jei neapibrėžta priskiriama reikšmė "b" );
- Ribotas išvestinių grąžinimo tipų tipų paveldėjimo hierarchijos išsaugojimas arba galimybė pakeisti pradinių tipų hierarchiją išvestiniuose argumentų tipuose ( grąžinimo tipas ir argumento tipas kontravariacija). Dabar PHP gali būti naudojamos šios konstrukcijos:
A klasė {}
B klasė išplečia A {}klasė Gamintojas {
viešosios funkcijos metodas(): A {}
}
klasė ChildProducer pratęsia Producer {
viešosios funkcijos metodas(): B {}
} - Išpakuojamas operatorius masyvuose „…$var“, apibrėžiant naują masyvą atlikti esamų masyvų pakeitimą;
$parts = ['obuolys', 'kriaušė'];
$vaisiai = ['bananas', 'apelsinas', …$dalelės, 'arbūzas'];
// ['bananas', 'apelsinas', 'obuolys', 'kriaušė', 'arbūzas']; - vizualinis didelių skaičių vaizdavimas su skyrikliais skaitiniais literalais (1_000_000_00);
- Remti , kurios leidžia išsaugoti nuorodą į objektą, bet netrukdo šiukšlių rinkėjui ištrinti susietą objektą;
- Naujas objektų serializavimas (serializable ir __sleep()/__wakeup() derinys), kuris pakeitė Serializable sąsają, kuri bus nebenaudojama;
// Grąžina masyvą, kuriame yra visos objekto būsenos;
viešoji funkcija __serialize(): masyvas;// Atkuria objekto būseną iš masyvo
viešoji funkcija __unserialize(masyvas $duomenys): void; - Leidžiama taikyti išimtis iš metodo ;
- Pridėtas objekto kodo talpyklos išankstinio įkėlimo palaikymas. Pridėtas parametras nustatymui
, per kurį galite nurodyti PHP scenarijų, kuris bus sukompiliuotas ir paleistas paleidus serverį. Šis scenarijus gali įkelti kitų failų operatyvinį kodą tiesiogiai įtraukiant juos arba naudojant funkciją opcache_compile_file(); - Prie plėtinio „Hash“ pridėta funkcija crc32c, skirta apskaičiuoti kontrolines sumas naudojant Castagnoli daugianarį;
- Pridėtas funkcijos password_hash() palaikymas slaptažodžių maišos metodams argon2i ir argin2id, įgyvendinant Sodium biblioteką, jei PHP sukurtas be libargon;
- Pridėta funkcija mb_str_split(), panaši į str_split(), bet veikianti ne baitais, o simbolių pozicijomis kelių baitų eilutėje;
- Funkcija strip_tags() dabar turi galimybę perduoti masyvą su žymų pavadinimais, t.y. vietoj strip_tags($str, ' ') dabar galite nurodyti strip_tags($str, ['a', 'p']);
- proc_open() leidžia operandus įtraukti į masyvą, o ne paleisti eilutę, taip pat suteikia gijų peradresavimą ir nulinio failo deskriptoriaus palaikymą;
proc_open(['php', '-r', 'echo "Hello World\n";'], $deskriptoriai, $pipes);
// Patinka 2>&1 apvalkale
proc_open($cmd, [1 => ['vamzdis', 'w'], 2 => ['peradresavimas', 1]], $vamzdžiai);// kaip 2>/dev/null arba 2>nul apvalkale
proc_open($cmd, [1 => ['vamzdis', 'w'], 2 => ['null']], $vamzdžiai); - Firebird/Interbase, Recode ir WDDX plėtiniai neįtraukti į pagrindinį platinimą. Šie plėtiniai dabar platinami per PECL;
- Perkelta į kategoriją ypatybės, pvz., įdėtieji trijų dalių operatoriai be skliaustų, prieiga prie masyvo elementų ir eilučių naudojant riestinius skliaustus („$var{$idx}“), funkcija is_real() ir perdavimas į realų, naudojant pirminį raktinį žodį be pagrindinės klasės, parametras allow_url_include konfigūracijos , objektams naudojant array_key_exists().
Funkcijos get_magic_quotes_gpc(), get_magic_quotes_runtime() ir
hebrevc(), convert_cyr_string(), pinigų_formatas(), ezmlm_hash(), atkūrimo_įtraukti_kelias(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().Įspėjimas apie pasenusios funkcijos naudojimą buvo pateiktas bandant apdoroti netinkamus simbolius funkcijose
base_convert(), bindec(), octdec() ir hexdec(), ir kai nurodomas ne eilutės šablonas mb_ereg_replace().
Šaltinis: opennet.ru
