Egy év fejlesztés után programozási nyelv kiadása . Az új ág egy sor új szolgáltatást, valamint számos olyan változtatást tartalmaz, amelyek megszakítják a kompatibilitást.
Kulcs PHP 7.4-ben:
- - Az osztály tulajdonságai mostantól típusdeklarációkat is tartalmazhatnak, például:
class felhasználó {
publikus int $id;
nyilvános string $név;
} - szintaxis az „fn(parameter_list) => expr” függvények meghatározásához hatókör érték szerinti kötéssel. Például az „fn($x) => $x + $y” analóg: „$fn2 = függvény ($x) use ($y) {return $x + $y;}”);
- "??=", amely használható alapértelmezett érték meghatározására ("a ??= b" hasonló az "a = a ?? b"-hez, ha "a" van megadva, akkor az értéke tárolva van, és ha nincs megadva, akkor "b" értékkel rendelkezik);
- Korlátozott a típusok öröklődési hierarchiájának megőrzése származtatott visszatérési típusokban, vagy az eredeti típusok hierarchiájának megfordítása származtatott argumentumtípusokban ( visszatérési típus és argumentumtípus kontravariancia). A következő konstrukciók most már használhatók PHP-ben:
A osztály {}
B osztály kiterjeszti A {}osztály producer {
nyilvános függvény metódusa(): A {}
}
class ChildProducer kiterjeszti Producer {
nyilvános függvény metódusa(): B {}
} - Operátor kicsomagolása a „…$var” tömbökön belül, végrehajtja a meglévő tömbök helyettesítését új tömb meghatározásakor;
$parts = ['alma', 'körte'];
$gyümölcs = ['banán', 'narancs', …$részek, 'görögdinnye'];
// ['banán', 'narancs', 'alma', 'körte', 'görögdinnye']; - nagy számok vizuális megjelenítése határolókkal numerikus literálokban (1_000_000_00);
- támogatás , amelyek lehetővé teszik egy objektumra való hivatkozás megtartását, de nem akadályozzák meg a szemétgyűjtőt a társított objektum törlésében;
- Új objektum szerializálás (a Serializable és a __sleep()/__wakeup() kombinációja), amely felváltotta a Serializable interfészt, amely elavulttá válik;
// Az objektum összes állapotát tartalmazó tömböt ad vissza;
public function __serialize(): tömb;// Visszaállítja egy objektum állapotát egy tömbből
public function __unserialize(array $data): void; - Kivételek dobása engedélyezett egy metódusból ;
- Támogatás hozzáadva az objektumkód-gyorsítótár előzetes betöltéséhez. Hozzáadott paraméter a beállításhoz
, amelyen keresztül megadhat egy PHP szkriptet, amely a szerver indulásakor le lesz fordítva és lefut. Ez a szkript képes betölteni más fájlok műveleti kódját azok közvetlen befoglalásával vagy az opcache_compile_file() függvény használatával; - Hozzáadtuk a crc32c függvényt a Hash kiterjesztéshez az ellenőrző összegek kiszámításához a Castagnoli polinom használatával;
- Támogatás hozzáadva a password_hash() függvényhez az argon2i és argin2id jelszókivonatolási módszerekhez a Sodium könyvtár megvalósításában, ha a PHP libargon nélkül épül fel;
- Hozzáadott függvény mb_str_split(), hasonló az str_split()-hez, de nem bájtokkal, hanem karakterpozíciókkal működik egy többbyte-os karakterláncban;
- A strip_tags() függvény immáron képes átadni egy tömböt címkenevekkel, pl. a strip_tags($str, ' ') helyett most megadhatja a strip_tags($str, ['a', 'p']);
- A proc_open() lehetővé teszi az operandusok tömbben történő felsorolását, nem pedig karakterláncok futtatását, valamint biztosítja a szál átirányítását és támogatja a null fájlleírót;
proc_open(['php', '-r', 'echo "Hello World\n";'], $leírók, $pipes);
// Like 2>&1 shellben
proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['átirányítás', 1]], $pipes);// mint a 2>/dev/null vagy a 2>null shellben
proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes); - A Firebird/Interbase, a Recode és a WDDX kiterjesztések ki vannak zárva az alapterjesztésből. Ezeket a kiterjesztéseket most a PECL-en keresztül terjesztik;
- Átkerült a kategóriába olyan szolgáltatások, mint a beágyazott háromtagú operátorok zárójelek nélkül, a tömbelemek és karakterláncok elérése kapcsos zárójelekkel ("$var{$idx}"), az is_real() függvény és a valós formátumba való átküldés, a szülő kulcsszó használata szülőosztály nélkül, az allow_url_include konfigurációk paraméter , használja az array_key_exists() függvényt az objektumokon.
A get_magic_quotes_gpc(), get_magic_quotes_runtime() és
hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().Figyelmeztetés egy elavult szolgáltatás használatára vonatkozik, amikor a függvényekben helytelen szimbólumokat próbálnak feldolgozni
base_convert(), bindec(), octdec() és hexdec(), és ha nem karakterlánc-mintát ad meg az mb_ereg_replace() függvényben.
Forrás: opennet.ru
