PHP 7.4 programavimo kalbos išleidimas

Po metų plėtros pateiktas programavimo kalbos leidimas PHP 7.4. Naujoje šakoje yra daugybė naujų funkcijų, taip pat keletas pakeitimų, kurie pažeidžia suderinamumą.

Raktas patobulinimai PHP 7.4:

  • Įvestos ypatybės - klasės savybės dabar gali apimti tipo deklaracijas, pavyzdžiui:

    Class User {
    viešasis int $id;
    vieša eilutė $vardas;
    }

  • Sutrumpintas sintaksė funkcijoms apibrėžti "fn(parameter_list) => expr" su apimties susiejimu pagal reikšmę. Pavyzdžiui, "fn($x) => $x + $y" yra analogiškas "$fn2 = funkcija ($x) use ($y) {return $x + $y;}");
  • Greitųjų raštų priskyrimo operatorius "??=", kuris gali būti naudojamas numatytajai reikšmei apibrėžti ("a ??= b" yra panašus į "a = a ?? b", jei "a" yra apibrėžtas, jos reikšmė išsaugoma, o jei neapibrėžta priskiriama reikšmė "b" );
  • Ribotas galimybė išvestinių grąžinimo tipų tipų paveldėjimo hierarchijos išsaugojimas arba galimybė pakeisti pradinių tipų hierarchiją išvestiniuose argumentų tipuose (kovariacija grąžinimo tipas ir argumento tipas kontravariacija). Dabar PHP gali būti naudojamos šios konstrukcijos:

    A klasė {}
    B klasė išplečia A {}

    klasė Gamintojas {
    viešosios funkcijos metodas(): A {}
    }
    klasė ChildProducer pratęsia Producer {
    viešosios funkcijos metodas(): B {}
    }

  • Išpakuojamas operatorius masyvuose „…$var“, leidžiantis apibrėžiant naują masyvą atlikti esamų masyvų pakeitimą;

    $parts = ['obuolys', 'kriaušė'];
    $vaisiai = ['bananas', 'apelsinas', …$dalelės, 'arbūzas'];
    // ['bananas', 'apelsinas', 'obuolys', 'kriaušė', 'arbūzas'];

  • Galimybė vizualinis didelių skaičių vaizdavimas su skyrikliais skaitiniais literalais (1_000_000_00);
  • Remti silpnosios grandys, kurios leidžia išsaugoti nuorodą į objektą, bet netrukdo šiukšlių rinkėjui ištrinti susietą objektą;
  • Naujas mechanizmas objektų serializavimas (serializable ir __sleep()/__wakeup() derinys), kuris pakeitė Serializable sąsają, kuri bus nebenaudojama;

    // Grąžina masyvą, kuriame yra visos objekto būsenos;
    viešoji funkcija __serialize(): masyvas;

    // Atkuria objekto būseną iš masyvo
    viešoji funkcija __unserialize(masyvas $duomenys): void;

  • Leidžiama taikyti išimtis iš metodo __toString();
  • Pridėtas objekto kodo talpyklos išankstinio įkėlimo palaikymas. Pridėtas parametras nustatymui
    opcache.įkelti iš anksto, per kurį galite nurodyti PHP scenarijų, kuris bus sukompiliuotas ir paleistas paleidus serverį. Šis scenarijus gali įkelti kitų failų operatyvinį kodą tiesiogiai įtraukiant juos arba naudojant funkciją opcache_compile_file();
  • Prie plėtinio „Hash“ pridėta funkcija crc32c, skirta apskaičiuoti kontrolines sumas naudojant Castagnoli daugianarį;
  • Pridėtas funkcijos password_hash() palaikymas slaptažodžių maišos metodams argon2i ir argin2id, įgyvendinant Sodium biblioteką, jei PHP sukurtas be libargon;
  • Pridėta funkcija mb_str_split(), panaši į str_split(), bet veikianti ne baitais, o simbolių pozicijomis kelių baitų eilutėje;
  • Funkcija strip_tags() dabar turi galimybę perduoti masyvą su žymų pavadinimais, t.y. vietoj strip_tags($str, ' ') dabar galite nurodyti strip_tags($str, ['a', 'p']);
  • proc_open() leidžia operandus įtraukti į masyvą, o ne paleisti eilutę, taip pat suteikia gijų peradresavimą ir nulinio failo deskriptoriaus palaikymą;

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

    // Patinka 2>&1 apvalkale
    proc_open($cmd, [1 => ['vamzdis', 'w'], 2 => ['peradresavimas', 1]], $vamzdžiai);

    // kaip 2>/dev/null arba 2>nul apvalkale
    proc_open($cmd, [1 => ['vamzdis', 'w'], 2 => ['null']], $vamzdžiai);

  • Firebird/Interbase, Recode ir WDDX plėtiniai neįtraukti į pagrindinį platinimą. Šie plėtiniai dabar platinami per PECL;
  • Perkelta į kategoriją pasenusi ypatybės, pvz., įdėtieji trijų dalių operatoriai be skliaustų, prieiga prie masyvo elementų ir eilučių naudojant riestinius skliaustus („$var{$idx}“), funkcija is_real() ir perdavimas į realų, naudojant pirminį raktinį žodį be pagrindinės klasės, parametras allow_url_include konfigūracijos , objektams naudojant array_key_exists().

    Funkcijos get_magic_quotes_gpc(), get_magic_quotes_runtime() ir
    hebrevc(), convert_cyr_string(), pinigų_formatas(), ezmlm_hash(), atkūrimo_įtraukti_kelias(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    Įspėjimas apie pasenusios funkcijos naudojimą buvo pateiktas bandant apdoroti netinkamus simbolius funkcijose
    base_convert(), bindec(), octdec() ir hexdec(), ir kai nurodomas ne eilutės šablonas mb_ereg_replace().

Šaltinis: opennet.ru

Добавить комментарий