Egy év fejlesztés után bemutatott programozási nyelv kiadása PHP 7.4. Az új ág egy sor új szolgáltatást, valamint számos olyan változtatást tartalmaz, amelyek megszakítják a kompatibilitást.
Beírt tulajdonságok - 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;
}
Rövidítve 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;}”);
Gyorsírási hozzárendelés operátor "??=", 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 alkalom 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 (kovariancia 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, lehetővé téve végrehajtja a meglévő tömbök helyettesítését új tömb meghatározásakor;
Alkalom nagy számok vizuális megjelenítése határolókkal numerikus literálokban (1_000_000_00);
támogatás gyenge láncszemek, 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 __toString();
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 opcache.előre, 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;
// 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 elavult 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.