PHP 7.4 programozási nyelv kiadása

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.

Kulcs fejlesztések PHP 7.4-ben:

  • 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;

    $parts = ['alma', 'körte'];
    $gyümölcs = ['banán', 'narancs', …$részek, 'görögdinnye'];
    // ['banán', 'narancs', 'alma', 'körte', 'görögdinnye'];

  • 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;

    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 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.

Forrás: opennet.ru

Hozzászólás