Pagpagawas sa PHP 7.4 programming language

Human sa usa ka tuig nga kalamboan gipresentar pagpagawas sa programming language PHP 7.4. Ang bag-ong sanga naglakip sa usa ka serye sa mga bag-ong bahin, ingon man usab sa daghang mga pagbag-o nga makaguba sa pagkaangay.

yawe mga kalamboan sa PHP 7.4:

  • Gi-type nga Properties - Ang mga kabtangan sa klase mahimo nang maglakip sa mga deklarasyon sa tipo, pananglitan:

    user sa klase {
    publiko int $id;
    public string $ngalan;
    }

  • Gipamubo syntax alang sa pagtino sa mga gimbuhaton "fn(parameter_list) => expr" nga adunay scope nga nagbugkos sa kantidad. Pananglitan, ang "fn ($x) => $x + $y" susama sa "$fn2 = function ($x) gamit ($y) {return $x + $y;}");
  • Operator sa assignment sa shorthand "???=" nga mahimong gamiton sa paghubit sa usa ka default nga bili ("a ??= b" susama sa "a = a ?? b", kung "a" gihubit ang bili niini gitipigan, ug kung wala gihubit kini gihatag ang kantidad nga "b");
  • Limitado oportunidad pagpreserbar sa inheritance hierarchy sa mga tipo sa derived return type, o ang abilidad sa pag-reverse sa hierarchy sa orihinal nga tipo sa derived argument type (covariance balik nga tipo ug argumento nga kontravariance). Ang mosunod nga mga konstruksyon mahimo nang gamiton sa PHP:

    klase A {}
    ang klase B nagpalapad sa A {}

    klase nga producer {
    pamaagi sa pag-obra sa publiko(): A {}
    }
    klase ChildProducer nagpalapad sa Producer {
    pamaagi sa pagpalihok sa publiko(): B {}
    }

  • Pag-unpack sa operator sa sulod sa mga arrays "...$var", pagtugot paghimo sa pag-ilis sa kasamtangan nga mga arrays sa pag-definite sa usa ka bag-ong array;

    $parts = ['mansanas', 'peras'];
    $prutas = ['saging', 'orange', ...$parts, 'pakwan'];
    // ['saging', 'orange', 'mansanas', 'pear', 'pakwan'];

  • Abilidad biswal nga representasyon sa dagkong mga numero nga adunay mga delimiter sa numeric literals (1_000_000_00);
  • suporta huyang nga mga sumpay, nga nagtugot kanimo sa pagpabilin sa usa ka reperensiya sa usa ka butang, apan ayaw babagan ang tigkolekta sa basura sa pagtangtang sa kauban nga butang;
  • Bag-o mekanismo object serialization (usa ka kombinasyon sa Serializable ug __sleep()/__wakeup()), nga mipuli sa Serializable interface, nga dili na magamit;

    // Nagbalik sa usa ka laray nga adunay tanan nga estado sa butang;
    public function __serialize(): array;

    // Ibalik ang kahimtang sa usa ka butang gikan sa usa ka laray
    public function __unserialize(array $data): void;

  • Gitugotan sa paglabay sa mga eksepsiyon gikan sa usa ka pamaagi __toString();
  • Gidugang nga suporta alang sa preloading sa object code cache. Gidugang nga parameter alang sa pag-set
    opcache.preload, diin mahimo nimong ipiho ang usa ka script sa PHP nga i-compile ug idagan kung magsugod ang server. Kini nga script mahimong magkarga sa opcode sa ubang mga file pinaagi sa ilang direktang paglakip o paggamit sa opcache_compile_file() function;

  • Gidugang ang crc32c function sa Hash extension aron makalkulo ang mga checksum gamit ang Castagnoli polynomial;
  • Gidugang nga suporta sa password_hash() function para sa password hashing method argon2i ug argin2id, sa pagpatuman sa Sodium library, kung ang PHP gitukod nga walay libargon;
  • Gidugang nga function mb_str_split(), susama sa str_split(), apan naglihok dili sa mga byte apan adunay mga posisyon sa karakter sa usa ka multi-byte string;
  • Ang strip_tags() function karon adunay abilidad sa pagpasa sa usa ka array nga adunay mga tag name, i.e. imbes nga strip_tags($str, ' ') mahimo nimong ipiho ang strip_tags($str, ['a', 'p']);
  • Ang proc_open() nagtugot sa mga operand nga malista sa usa ka laray kay sa usa ka string nga modagan, ug kini usab naghatag ug thread redirection ug suporta alang sa null file descriptor;

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

    // Sama sa 2>&1 sa kabhang
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]], $pipes);

    // sama sa 2>/dev/null o 2>nul sa kabhang
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);

  • Ang mga extension sa Firebird/Interbase, Recode ug WDDX wala iapil sa basic distribution. Kini nga mga extension giapod-apod na pinaagi sa PECL;
  • Gibalhin sa kategorya karaan na mga feature sama sa nested ternary operators nga walay parentheses, pag-access sa array elements ug strings gamit ang curly braces (β€œ$var{$idx}”), ang is_real() function ug casting to real, gamit ang parent keyword nga walay parent class, parameter allow_url_include configurations , gamit ang array_key_exists() sa mga butang.

    Ang mga gimbuhaton get_magic_quotes_gpc(), get_magic_quotes_runtime(), ug
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    Usa ka pasidaan bahin sa paggamit sa usa ka karaan nga bahin gihatag sa pagsulay sa pagproseso sa dili husto nga mga simbolo sa mga gimbuhaton
    base_convert(), bindec(), octdec() ug hexdec(), ug sa dihang nagspesipiko ug non-string pattern sa mb_ereg_replace().

Source: opennet.ru

Idugang sa usa ka comment