PHP 7.4 forritunarmálsútgáfa

Eftir eins árs þróun fram útgáfu forritunarmáls PHP 7.4. Nýja útibúið inniheldur röð nýrra eiginleika, auk nokkurra breytinga sem brjóta eindrægni.

Lykill endurbætur í PHP 7.4:

  • Vélritaðir eiginleikar - flokkareiginleikar geta nú innihaldið tegundayfirlýsingar, til dæmis:

    bekkur notandi {
    opinbert int $id;
    opinber strengur $nafn;
    }

  • Сокращённый setningafræði til að skilgreina aðgerðir „fn(parameter_list) => expr“ með svigrúmsbindingu eftir gildi. Til dæmis, „fn($x) => $x + $y“ er hliðstætt „$fn2 = fall ($x) notkun ($y) {skila $x + $y;}“);
  • Styðmynd verkefnastjóri "??=" sem hægt er að nota til að skilgreina sjálfgefið gildi ("a ??= b" er svipað og "a = a ?? b", ef "a" er skilgreint er gildi þess geymt, og ef það er ekki skilgreint er úthlutað gildinu "b" );
  • Takmarkað tækifæri varðveita erfðastigveldi tegunda í afleiddum ávöxtunargerðum, eða getu til að snúa við stigveldi upprunalegu tegunda í afleiddum tegundum röksemda (meðvirkni skilategund og andstæða tegund röksemda). Eftirfarandi smíði er nú hægt að nota í PHP:

    flokkur A {}
    flokkur B nær A {}

    flokkur framleiðandi {
    public function method(): A {}
    }
    class ChildProducer framlengir framleiðanda {
    public function method(): B {}
    }

  • Að pakka upp rekstraraðila inni í fylkjum "...$var", leyfa framkvæma skiptingu á núverandi fylki þegar nýtt fylki er skilgreint;

    $parts = ['epli', 'pera'];
    $fruits = ['banani', 'appelsína', …$hlutar, 'vatnsmelóna'];
    // ['banani', 'appelsína', 'epli', 'pera', 'vatnsmelóna'];

  • Tækifæri sjónræn framsetning á stórum tölum með afmörkun í tölustöfum (1_000_000_00);
  • Stuðningur veikir hlekkir, sem gerir þér kleift að halda tilvísun í hlut, en ekki hindra sorphirðu í að eyða tengdum hlut;
  • Nýtt vélar raðgreining hluta (sambland af Serializable og __sleep()/__wakeup()), sem kom í stað Serializable viðmótsins, sem verður úrelt;

    // Skilar fylki sem inniheldur öll ástand hlutarins;
    opinber fall __serialize(): fylki;

    // Endurheimtir ástand hlutar úr fylki
    public function __unserialize(fylki $data): ógilt;

  • Leyft að henda undantekningum frá aðferð __toString();
  • Bætti við stuðningi við að forhlaða skyndiminni hlutakóða. Bætt við færibreytu fyrir stillingu
    opcache.forhlaða, þar sem þú getur tilgreint PHP skriftu sem verður sett saman og keyrt þegar þjónninn byrjar. Þetta handrit getur hlaðið opkóða annarra skráa með beinni innlimun þeirra eða með því að nota opcache_compile_file() aðgerðina;

  • Bætti crc32c falli við Hash viðbótina til að reikna út eftirlitssummur með því að nota Castagnoli margliðuna;
  • Bætti við stuðningi við password_hash() aðgerðina fyrir lykilorðahasjaðferðir argon2i og argin2id, í útfærslu Natríumsafnsins, ef PHP er byggt án libargon;
  • Bætti við aðgerðinni mb_str_split(), svipað og str_split(), en starfar ekki með bætum heldur með stafi stafa í margra bæta streng;
  • Strimla_tags() aðgerðin hefur nú getu til að fara framhjá fylki með merki nöfnum, þ.e. í stað strip_tags($str, ' ') geturðu nú tilgreint strip_tags($str, ['a', 'p']);
  • proc_open() gerir kleift að skrá óperandur í fylki, frekar en streng til að keyra, og veitir einnig þráðsvísun og stuðning við núllskráarlýsingu;

    proc_open(['php', '-r', 'echo "Halló heimur\n";'], $lýsingar, $pipes);

    // Eins og 2>&1 í skel
    proc_open($cmd, [1 => ['pípa', 'w'], 2 => ['tilvísun', 1]], $pípur);

    // eins og 2>/dev/null eða 2>nul í skel
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);

  • Firebird/Interbase, Recode og WDDX viðbætur eru útilokaðar frá grunndreifingunni. Þessum viðbótum er nú dreift í gegnum PECL;
  • Fært í flokk gamaldags eiginleikar eins og hreiðraðir þrískiptir rekstraraðilar án sviga, aðgangur að fylkisþáttum og strengjum með því að nota krullaðar axlabönd ("$var{$idx}"), is_real() aðgerðina og steypa í raun, með því að nota yfirleitarorðið án foreldraflokks, breytu allow_url_include stillingar , með því að nota array_key_exists() á hlutum.

    Aðgerðirnar get_magic_quotes_gpc(), get_magic_quotes_runtime() og
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    Viðvörun um notkun úrelts eiginleika hefur verið veitt þegar reynt er að vinna úr röngum táknum í aðgerðum
    base_convert(), bindec(), octdec() og hexdec(), og þegar tilgreint er mynstur sem ekki er strengja í mb_ereg_replace().

Heimild: opennet.ru

Bæta við athugasemd