PHP 7.4 programmēšanas valodas izlaidums

Pēc gada attīstības uzrādīts programmēšanas valodas izlaidums PHP 7.4. Jaunajā filiālē ir iekļauta virkne jaunu funkciju, kā arī vairākas izmaiņas, kas traucē saderību.

Atslēga uzlabojumi PHP 7.4:

  • Ierakstītie rekvizīti - klases rekvizīti tagad var ietvert tipa deklarācijas, piemēram:

    klases lietotājs {
    publiskais int $id;
    publiska virkne $name;
    }

  • Saīsināts sintakse funkciju definēšanai “fn(parameter_list) => expr” ar tvēruma saistīšanu pēc vērtības. Piemēram, "fn($x) => $x + $y" ir analogs "$fn2 = funkcija ($x) use ($y) {return $x + $y;}");
  • Īsrakstu uzdevumu operators "??=", ko var izmantot, lai definētu noklusējuma vērtību ("a ??= b" ir līdzīgs "a = a ?? b", ja ir definēts "a", tā vērtība tiek saglabāta, un, ja tā nav definēta tiek piešķirta vērtība "b" );
  • Ierobežots iespēja tipu mantojuma hierarhijas saglabāšana atvasinātajos atdeves tipos vai iespēja mainīt sākotnējo tipu hierarhiju atvasinātajos argumentu tipos (kovariācija atgriešanās veids un argumenta tipa pretrunas). PHP tagad var izmantot šādas konstrukcijas:

    klase A {}
    B klase paplašina A {}

    klases producents {
    publiskās funkcijas metode(): A {}
    }
    class ChildProducer paplašina ražotāju {
    publiskās funkcijas metode (): B {}
    }

  • Operatora izpakošana masīvos “…$var”, ļaujot veikt esošo masīvu aizstāšanu, definējot jaunu masīvu;

    $parts = ['ābols', 'bumbieris'];
    $fruits = ['banāns', 'apelsīns', ...$daļas, 'arbūzs'];
    // ['banāns', 'apelsīns', 'ābols', 'bumbieris', 'arbūzs'];

  • Iespēja lielu skaitļu vizuāla attēlošana ar norobežotājiem ciparu literāļos (1_000_000_00);
  • atbalsts vājās saites, kas ļauj saglabāt atsauci uz objektu, bet neliedz atkritumu savācējam dzēst saistīto objektu;
  • Jauns mašīnas objektu serializācija (serializable un __sleep()/__wakeup() kombinācija), kas aizstāja Serializable interfeisu, kas tiks novecojis;

    // Atgriež masīvu, kurā ir visi objekta stāvokļi;
    publiskā funkcija __serialize(): masīvs;

    // Atjauno objekta stāvokli no masīva
    publiskā funkcija __unserialize(masīvs $dati): void;

  • Atļauts mest izņēmumus no metodes __toString();
  • Pievienots atbalsts objekta koda kešatmiņas iepriekšējai ielādei. Pievienots parametrs iestatīšanai
    opcache.preload, caur kuru var norādīt PHP skriptu, kas tiks apkopots un palaists, kad serveris startēs. Šis skripts var ielādēt citu failu opkodu, tos tieši iekļaujot vai izmantojot funkciju opcache_compile_file();

  • Hash paplašinājumam pievienota funkcija crc32c, lai aprēķinātu kontrolsummas, izmantojot Castagnoli polinomu;
  • Pievienots atbalsts paroles jaukšanas metodēm argon2i un argin2id funkcijai password_hash() Sodium bibliotēkas ieviešanā, ja PHP ir veidots bez libargon;
  • Pievienota funkcija mb_str_split(), līdzīga str_split(), bet darbojas nevis ar baitiem, bet ar rakstzīmju pozīcijām vairāku baitu virknē;
  • Funkcijai strip_tags() tagad ir iespēja nodot masīvu ar tagu nosaukumiem, t.i. strip_tags($str, '') vietā tagad varat norādīt strip_tags($str, ['a', 'p']);
  • proc_open() ļauj operandus uzskaitīt masīvā, nevis palaist virkni, kā arī nodrošina pavedienu novirzīšanu un atbalstu nulles faila deskriptoram;

    proc_open(['php', '-r', 'echo "Sveika pasaule\n";'], $deskriptors, $pipes);

    // Patīk 2>&1 čaulā
    proc_open($cmd, [1 => ['caurule', 'w'], 2 => ['novirzīt', 1]], $pipes);

    // piemēram, 2>/dev/null vai 2>null čaulā
    proc_open($cmd, [1 => ['caurule', 'w'], 2 => ['null']], $pipes);

  • Firebird/Interbase, Recode un WDDX paplašinājumi ir izslēgti no pamata izplatīšanas. Šie paplašinājumi tagad tiek izplatīti, izmantojot PECL;
  • Pārcelts uz kategoriju novecojis funkcijas, piemēram, ligzdotie trīskāršie operatori bez iekavām, piekļuve masīva elementiem un virknēm, izmantojot krokainas figūriekavas (“$var{$idx}”), funkcija is_real() un apraide uz reālu, izmantojot vecāku atslēgvārdu bez vecākklases, parametrs allow_url_include konfigurācijas. , objektiem izmantojot array_key_exists().

    Funkcijas get_magic_quotes_gpc(), get_magic_quotes_runtime() un
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), atjaunot_iekļauts_ceļš(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    Mēģinot apstrādāt nepareizus simbolus funkcijās, ir sniegts brīdinājums par novecojušas funkcijas izmantošanu.
    base_convert(), bindec(), octdec() un hexdec(), un, norādot nevirknes modeli mb_ereg_replace().

Avots: opennet.ru

Pievieno komentāru