Lëshimi i gjuhës programuese PHP 7.4

Pas një viti zhvillimi prezantuar lëshimi i gjuhës së programimit PHP 7.4. Dega e re përfshin një sërë veçorish të reja, si dhe disa ndryshime që prishin përputhshmërinë.

Celës përmirësime në PHP 7.4:

  • Vetitë e shtypura - Karakteristikat e klasës tani mund të përfshijnë deklarata të tipit, për shembull:

    Përdoruesi i klasës {
    publike int $id;
    vargu publik $emri;
    }

  • Shkurtuar sintaksë për përcaktimin e funksioneve “fn(parameter_list) => expr” me lidhje të shtrirjes sipas vlerës. Për shembull, "fn($x) => $x + $y" është analoge me "$fn2 = funksioni ($x) përdor ($y) {return $x + $y;}");
  • Operatori i caktimit të stenografisë "??=" e cila mund të përdoret për të përcaktuar një vlerë të paracaktuar ("a ??= b" është e ngjashme me "a = a ?? b", nëse "a" është përcaktuar, vlera e saj ruhet dhe nëse nuk përcaktohet i është caktuar vlera "b" );
  • E kufizuar mundësi ruajtja e hierarkisë së trashëgimisë së llojeve në llojet e kthimit të prejardhur, ose aftësia për të ndryshuar hierarkinë e llojeve origjinale në llojet e argumenteve të prejardhur (kovarianca lloji i kthimit dhe kontravarianca e llojit të argumentit). Konstruktet e mëposhtme tani mund të përdoren në PHP:

    klasa A {}
    klasa B shtrihet A {}

    Prodhuesi i klasës {
    metoda e funksionit publik(): A {}
    }
    klasa ChildProducer zgjeron Prodhuesin {
    metoda e funksionit publik(): B {}
    }

  • Shpaketimi i operatorit brenda vargjeve “…$var”, duke lejuar të kryejë zëvendësimin e vargjeve ekzistuese gjatë përcaktimit të një vargu të ri;

    $parts = ['mollë', 'dardhë'];
    $fruts = ['banane', 'portokalli', …$pjesë, 'shalqi'];
    // ['banane', 'portokalli', 'mollë', 'dardhë', 'shalqi'];

  • mundësi paraqitje vizuale e numrave të mëdhenj me kufizues në literale numerike (1_000_000_00);
  • Mbështetje lidhje të dobëta, të cilat ju lejojnë të mbani një referencë për një objekt, por nuk e bllokojnë grumbulluesin e mbeturinave nga fshirja e objektit të lidhur;
  • I ri mekanizëm serializimi i objekteve (një kombinim i Serializable dhe __sleep()/__wakeup()), i cili zëvendësoi ndërfaqen Serializable, e cila do të zhvlerësohet;

    // Kthen një grup që përmban të gjitha gjendjet e objektit;
    funksioni publik __serialize(): array;

    // Rikthen gjendjen e një objekti nga një grup
    funksioni publik __unserialize(array $data): void;

  • Lejohet të hedhë përjashtime nga një metodë __toString();
  • Mbështetje e shtuar për ngarkimin paraprak të cache-it të kodit të objektit. Parametri i shtuar për vendosjen
    opcache.mbarko, përmes të cilit mund të specifikoni një skript PHP që do të kompilohet dhe do të ekzekutohet kur të fillojë serveri. Ky skript mund të ngarkojë kodin optik të skedarëve të tjerë përmes përfshirjes së tyre direkte ose duke përdorur funksionin opcache_compile_file();

  • U shtua funksioni crc32c në shtrirjen Hash për të llogaritur shumat e kontrollit duke përdorur polinomin Castagnoli;
  • Mbështetje e shtuar për funksionin password_hash() për metodat e hashimit të fjalëkalimeve argon2i dhe argin2id, në zbatimin e bibliotekës Sodium, nëse PHP është ndërtuar pa libargon;
  • Funksioni i shtuar mb_str_split(), i ngjashëm me str_split(), por që funksionon jo me bajt, por me pozicione karakteresh në një varg me shumë bajt;
  • Funksioni strip_tags() tani ka aftësinë të kalojë një grup me emra etiketash, d.m.th. në vend të strip_tags ($str, ' ') tani mund të specifikoni strip_tags ($str, ['a', 'p']);
  • proc_open() lejon që operandët të renditen në një grup, në vend të një vargu për t'u ekzekutuar, dhe gjithashtu ofron ridrejtim të fillit dhe mbështetje për një përshkrues skedari null;

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

    // Si 2>&1 në guaskë
    proc_open($cmd, [1 => ['tub', 'w'], 2 => ['ridrejtim', 1]], $pipe);

    // si 2>/dev/null ose 2>nul në shell
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);

  • Shtesat Firebird/Interbase, Recode dhe WDDX janë të përjashtuara nga shpërndarja bazë. Këto zgjerime tani shpërndahen përmes PECL;
  • Transferuar në kategori i vjetëruar veçori të tilla si operatorët tresh të ndërthurur pa kllapa, qasja në elementë dhe vargje të grupit duke përdorur kllapa kaçurrelë (“$var{$idx}”), funksioni is_real() dhe kalimi në real, duke përdorur fjalën kyçe prind pa një klasë prind, parametri allow_url_include konfigurimet , duke përdorur array_key_exists() në objekte.

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

    Një paralajmërim për përdorimin e një veçorie të vjetëruar është dhënë kur përpiqeni të përpunoni simbole të pasakta në funksione
    base_convert(), bindec(), octdec() dhe hexdec(), dhe kur specifikoni një model jo-string në mb_ereg_replace().

Burimi: opennet.ru

Shto një koment