Vydanie programovacieho jazyka PHP 7.4

Po roku vývoja predložené vydanie programovacieho jazyka PHP 7.4. Nová pobočka obsahuje sériu nových funkcií, ako aj niekoľko zmien, ktoré narúšajú kompatibilitu.

Kľúč vylepšenia v PHP 7.4:

  • Typované vlastnosti - vlastnosti triedy môžu teraz obsahovať deklarácie typu, napríklad:

    trieda Používateľ {
    public int $id;
    verejný reťazec $meno;
    }

  • Skrátené syntax na definovanie funkcií „fn(zoznam_parametrov) => expr“ s rozsahom viazaným hodnotou. Napríklad „fn($x) => $x + $y“ je analogické k „$fn2 = funkcia ($x) použite ($y) {return $x + $y;}“);
  • Operátor stenografického priradenia "??=", ktorý možno použiť na definovanie predvolenej hodnoty ("a ??= b" je podobné ako "a = a ?? b", ak je definované "a", jeho hodnota sa uloží, a ak nie je definovaná má priradenú hodnotu "b" );
  • Obmedzené príležitosť zachovanie hierarchie dedičnosti typov v odvodených návratových typoch alebo možnosť obrátiť hierarchiu pôvodných typov v odvodených typoch argumentov (kovariancia návratový typ a rozporuplnosť typu argumentu). V PHP je teraz možné použiť nasledujúce konštrukcie:

    trieda A {}
    trieda B rozširuje A {}

    class Producent {
    metóda verejnej funkcie (): A {}
    }
    class ChildProducer rozširuje Producer {
    metóda verejnej funkcie (): B {}
    }

  • Operátor rozbaľovania vnútri polí „…$var“, dovoľovať vykonať náhradu existujúcich polí pri definovaní nového poľa;

    $parts = ['jablko', 'hruška'];
    $ovocie = ['banán', 'pomaranč', …$časti, 'vodný melón'];
    // ['banán', 'pomaranč', 'jablko', 'hruška', 'vodný melón'];

  • Príležitosť vizuálne znázornenie veľkých čísel s oddeľovačmi v číselných literáloch (1_000_000_00);
  • Podpora slabé odkazy, ktoré vám umožňujú zachovať referenciu na objekt, ale nebránia zberaču odpadu vo vymazaní pridruženého objektu;
  • Nový mechanizmus serializácia objektov (kombinácia Serializable a __sleep()/__wakeup()), ktorá nahradila Serializable rozhranie, ktoré bude zastarané;

    // Vráti pole obsahujúce všetky stavy objektu;
    verejná funkcia __serialize(): pole;

    // Obnoví stav objektu z poľa
    verejná funkcia __unserialize(pole $data): void;

  • Povolené vyvolávať výnimky z metódy __natiahnuť();
  • Pridaná podpora pre predbežné načítanie vyrovnávacej pamäte objektového kódu. Pridaný parameter pre nastavenie
    opcache.preload, prostredníctvom ktorého môžete zadať PHP skript, ktorý sa skompiluje a spustí pri spustení servera. Tento skript môže načítať operačný kód iných súborov prostredníctvom ich priameho zahrnutia alebo pomocou funkcie opcache_compile_file();

  • Do rozšírenia Hash bola pridaná funkcia crc32c na výpočet kontrolných súčtov pomocou Castagnoliho polynómu;
  • Pridaná podpora funkcie password_hash() pre metódy hashovania hesiel argon2i a argin2id v implementácii knižnice Sodium, ak je PHP zostavené bez libargonu;
  • Pridaná funkcia mb_str_split(), podobná str_split(), ale nepracuje s bajtmi, ale s pozíciami znakov vo viacbajtovom reťazci;
  • Funkcia strip_tags() má teraz možnosť odovzdať pole s názvami značiek, t.j. namiesto strip_tags($str, ' ') teraz môžete zadať strip_tags($str, ['a', 'p']);
  • proc_open() umožňuje, aby boli operandy uvedené v poli, a nie v reťazci, aby sa spúšťali, a tiež poskytuje presmerovanie vlákien a podporu pre nulový deskriptor súboru;

    proc_open(['php', '-r', 'echo "Ahoj svet\n";'], $descriptors, $pipes);

    // Like 2>&1 in shell
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]], $pipes);

    // ako 2>/dev/null alebo 2>nul v shelli
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);

  • Rozšírenia Firebird/Interbase, Recode a WDDX sú zo základnej distribúcie vylúčené. Tieto rozšírenia sú teraz distribuované prostredníctvom PECL;
  • Presunuté do kategórie zastarané funkcie, ako sú vnorené ternárne operátory bez zátvoriek, prístup k prvkom poľa a reťazcom pomocou zložených zátvoriek (“$var{$idx}”), funkcia is_real() a pretypovanie na real, pomocou nadradeného kľúčového slova bez nadradenej triedy, konfigurácie parametra allow_url_include pomocou array_key_exists() na objektoch.

    Funkcie get_magic_quotes_gpc(), get_magic_quotes_runtime() a
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    Pri pokuse o spracovanie nesprávnych symbolov vo funkciách bolo poskytnuté upozornenie na použitie zastaranej funkcie
    base_convert(), bindec(), octdec() a hexdec() a pri špecifikovaní nereťazcového vzoru v mb_ereg_replace().

Zdroj: opennet.ru

Pridať komentár