Izdaja programskega jezika PHP 7.4

Po letu razvoja predstavljeno izdaja programskega jezika PHP 7.4. Nova veja vključuje vrsto novih funkcij, pa tudi več sprememb, ki motijo ​​združljivost.

Ključ izboljšave v PHP 7.4:

  • Tipizirane lastnosti - lastnosti razreda lahko zdaj vključujejo deklaracije tipa, na primer:

    razred uporabnik {
    public int $id;
    javni niz $name;
    }

  • Skrajšano sintaksa za definiranje funkcij “fn(parameter_list) => expr” z vezavo obsega po vrednosti. Na primer, "fn($x) => $x + $y" je analogno "$fn2 = funkcija ($x) uporabi ($y) {vrni $x + $y;}");
  • Stenografski operater dodelitve "??=", ki se lahko uporabi za definiranje privzete vrednosti ("a ??= b" je podoben "a = a ?? b", če je "a" definiran, se njegova vrednost shrani, in če ni definiran, je dodeljena vrednost "b" );
  • Omejeno priložnost ohranjanje hierarhije dedovanja tipov v izpeljanih vrnjenih tipih ali zmožnost obračanja hierarhije izvirnih tipov v izpeljanih tipih argumentov (kovarianca povratni tip in kontravariantnost tipa argumenta). V PHP je zdaj mogoče uporabiti naslednje konstrukte:

    razred A {}
    razred B razširi A {}

    class Producer {
    metoda javne funkcije(): A {}
    }
    class ChildProducer extends Producer {
    metoda javne funkcije (): B {}
    }

  • Razpakiranje operatorja znotraj nizov “…$var”, dovoljuje izvajati zamenjavo obstoječih matrik pri definiranju nove matrike;

    $parts = ['jabolko', 'hruška'];
    $sadje = ['banana', 'pomaranča', ...$deli, 'lubenica'];
    // ['banana', 'pomaranča', 'jabolko', 'hruška', 'lubenica'];

  • Priložnost vizualni prikaz velikih števil z ločili v številskih literalih (1_000_000_00);
  • Podpora šibki členi, ki vam omogočajo, da obdržite sklic na objekt, vendar ne blokirate zbiralnika smeti, da ne izbriše povezanega objekta;
  • Novo mehanizem serializacija objektov (kombinacija Serializable in __sleep()/__wakeup()), ki je nadomestila vmesnik Serializable, ki bo opuščen;

    // Vrne matriko, ki vsebuje vsa stanja objekta;
    javna funkcija __serialize(): niz;

    // Obnovi stanje objekta iz matrike
    javna funkcija __unserialize(array $data): void;

  • Dovoljeno vrže izjeme iz metode __toString();
  • Dodana podpora za prednalaganje predpomnilnika objektne kode. Dodan parameter za nastavitev
    opcache.preload, prek katerega lahko določite skript PHP, ki bo preveden in zagnan ob zagonu strežnika. Ta skript lahko naloži operacijsko kodo drugih datotek z njihovo neposredno vključitvijo ali uporabo funkcije opcache_compile_file();

  • Dodana funkcija crc32c razširitvi Hash za izračun kontrolnih vsot z uporabo Castagnolijevega polinoma;
  • Dodana podpora funkciji password_hash() za metode zgoščevanja gesel argon2i in argin2id v implementaciji knjižnice Natrij, če je PHP zgrajen brez libargona;
  • Dodana funkcija mb_str_split(), podobna str_split(), vendar ne deluje z bajti, temveč s položaji znakov v večbajtnem nizu;
  • Funkcija strip_tags() ima zdaj možnost posredovanja matrike z imeni oznak, tj. namesto strip_tags($str, ‘’) lahko zdaj določite strip_tags($str, [‘a’, ‘p’]);
  • proc_open() omogoča, da so operandi navedeni v matriki namesto v nizu za zagon, poleg tega pa zagotavlja preusmeritev niti in podporo za ničelni deskriptor datoteke;

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

    // Kot 2>&1 v lupini
    proc_open($cmd, [1 => ['cev', 'w'], 2 => ['preusmeritev', 1]], $cevi);

    // kot 2>/dev/null ali 2>nul v lupini
    proc_open($cmd, [1 => ['cev', 'w'], 2 => ['null']], $cevi);

  • Razširitve Firebird/Interbase, Recode in WDDX so izključene iz osnovne distribucije. Te razširitve se zdaj distribuirajo prek PECL;
  • Preneseno v kategorijo zastarel funkcije, kot so ugnezdeni ternarni operatorji brez oklepajev, dostop do elementov polja in nizov z uporabo zavitih oklepajev (»$var{$idx}«), funkcija is_real() in pretvorba v real, uporaba nadrejene ključne besede brez nadrejenega razreda, parameter allow_url_include konfiguracije , z uporabo array_key_exists() na objektih.

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

    Pri poskusu obdelave nepravilnih simbolov v funkcijah je bilo podano opozorilo o uporabi zastarele funkcije
    base_convert(), bindec(), octdec() in hexdec() in pri podajanju vzorca brez niza v mb_ereg_replace().

Vir: opennet.ru

Dodaj komentar