Pagpagawas sa PHP 8.2 programming language

Human sa usa ka tuig nga kalamboan, ang pagpagawas sa PHP 8.2 programming language gipresentar. 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.

Pangunang mga kalamboan sa PHP 8.2:

  • Gidugang ang abilidad sa pagmarka sa usa ka klase isip read-only. Ang mga kabtangan sa ingon nga mga klase mahimong itakda kausa ra, pagkahuman dili na sila magamit alang sa pagbag-o. Kaniadto, ang indibidwal nga mga kabtangan sa klase mahimong markahan nga read-only, apan karon mahimo nimong i-on kini nga mode alang sa tanan nga mga kabtangan sa klase sa usa ka higayon. Ang pagtino sa "readonly" nga bandila sa lebel sa klase nagbabag usab sa dinamikong pagdugang sa mga kabtangan sa klase. readonly class Post {public function __construct(public string $title, public Author $author,) {} } $post = new Post(/* … */); $post->wala mailhi = 'sayup'; // Error: Dili makahimo ug dinamikong kabtangan Post::$unknown
  • Gidugang ang mga lahi nga tipo nga "tinuod", "bakak" ug "null", nga mahimo’g usa ra ka balido nga kantidad ug gigamit, pananglitan, aron ibalik ang usa ka function nga adunay bandila sa pagtapos sa sayup o usa ka walay sulod nga kantidad. Kaniadto, ang "tinuod", "bakak" ug "null" magamit ra kauban sa ubang mga tipo (pananglitan, "string|false"), apan karon mahimo na silang gamiton nga gilain: function alwaysFalse(): false { return false ; }
  • Gihatag ang abilidad sa pagsala sa sensitibo nga mga setting sa stack trace output sa panahon sa usa ka sayup. Mahimong gikinahanglan ang pagputol sa pipila ka impormasyon kung ang impormasyon bahin sa mga sayop nga mahitabo awtomatik nga ipadala ngadto sa mga serbisyo sa ikatulo nga partido nga nagsubay sa mga problema ug nagpahibalo sa mga developers mahitungod niini. Pananglitan, mahimo nimong dili iapil ang mga parameter gikan sa pagsubay nga naglakip sa mga username, password, ug mga variable sa palibot. function test($foo, #[\SensitiveParameter] $password, $baz) {ilabay ang bag-ong Exception('Error'); } test('foo', 'password', 'baz'); Makamatay nga sayop: Wala Makuha nga Exception: Error sa test.php:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} nga gilabay sa test.php online 8
  • Gitugotan sa paghubit sa mga makanunayon sa mga kinaiya (kinaiya, usa ka mekanismo alang sa paggamit pag-usab sa code). Ang mga makanunayon nga gihubit sa usa ka kinaiya mahimong ma-access pinaagi sa klase nga naggamit sa kinaiya (apan dili pinaagi sa ngalan sa kinaiya). kinaiya Foo {publiko const CONSTANT = 1; public function bar(): int {pagbalik sa kaugalingon::CONSTANT; // Fatal error } } class Bar {gamit ang Foo; } var_dump(Bar:: CONSTANT); // 1
  • Gidugang ang abilidad sa pagtino sa mga tipo sa disjunctive normal nga porma (DNF, Disjunctive Normal Form), nga nagtugot kanimo sa pagkombinar sa unyon sa mga tipo (mga koleksyon sa duha o daghan pa nga mga tipo) ug ang intersection sa mga tipo (mga tipo kansang mga kantidad nahulog sa ilawom sa daghang dungan nga mga tipo). class Foo {public function bar((A&B)|null $entity) {kon ($entity === null) {balik null; } ibalik ang $entity; }}
  • Usa ka bag-ong extension nga "Random" ang gisugyot nga adunay mga gimbuhaton ug mga klase alang sa pagmugna og pseudo-random nga mga numero ug mga han-ay. Ang module naghatag ug object-oriented interface, nagtugot kaninyo sa pagpili sa lain-laing mga makina alang sa pagmugna pseudo-random nga mga numero, lakip na ang mga angay alang sa paggamit sa cryptography, ug naghatag og auxiliary function, alang sa panig-ingnan, alang sa random pagsagol arrays ug mga kuwerdas, pagpili sa random array yawe, dungan nga paggamit sa daghang mga generator sa imong kaugalingon nga independente nga estado. $rng = $is_production ? bag-ong Random\Engine\Secure() : bag-ong Random\Engine\Mt19937(1234); $randomizer = bag-ong Random\Randomizer($rng); $randomizer->shuffleString('foobar');
  • Gipatuman ang locale-independent case conversion. Ang mga gimbuhaton sama sa strtolower() ug strtoupper() karon kanunay nga mag-convert sa kaso sa mga karakter sa ASCII range, sama sa pag-set sa locale sa "C".
  • Gidugang bag-ong mga gimbuhaton: mysqli_execute_query, curl_upkeep, memory_reset_peak_usage, ini_parse_quantity, libxml_get_external_entity_loader, sodium_crypto_stream_xchacha20_xor_ic, openssl_cipher_key_length.
  • Gidugang bag-ong mga pamaagi: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype.
  • Ang abilidad sa dinamikong paghimo og mga kabtangan sa usa ka klase wala na gigamit. Sa PHP 9.0, ang pag-access sa mga kabtangan nga wala una nga gipasabut sa klase moresulta sa usa ka sayup (ErrorException). Ang mga klase nga naghatag ug __get ug __set nga mga pamaagi para sa pagmugna ug mga propyedad, o dinamikong mga kabtangan sa stdClass magpadayon sa pagtrabaho nga walay mga pagbag-o, ang implicit nga trabaho nga wala'y mga kabtangan ang suportahan aron mapanalipdan ang developer gikan sa mga tinago nga mga bug. Aron mapreserbar ang buhat sa daan nga code, ang "#[AllowDynamicProperties]" nga hiyas gisugyot, nga nagtugot sa paggamit sa dinamikong mga kabtangan.
  • Ang abilidad sa pag-ilis sa variable values ​​​​sa mga string gamit ang "${var}" ug ${(var)}" nga mga ekspresyon wala na gigamit. Ang suporta alang sa kasagarang gigamit nga "{$var}" ug "$var" nga mga substitusyon gipabilin. Pananglitan: "Hello {$world}"; OK "Hello $world"; OK "Hello ${world}"; Wala na gamita: Ang paggamit sa ${} sa mga kuwerdas wala na gamita
  • Ang partially supported callables nga matawag pinaagi sa "call_user_func($callable)" wala na gamita, pero wala mosuporta sa pagtawag sa pormang "$callable()": "self::method" "parent::method" "static :: pamaagi" ["kaugalingon", "pamaagi"] ["ginikanan", "pamaagi"] ["static", "pamaagi"] ["Foo", "Bar::pamaagi"] [bag-ong Foo, "Bar: : pamaagi "]
  • Ang error_log_mode nga direktiba gidugang sa mga setting, nga nagtugot kanimo sa pagtino sa access mode sa error log.

Source: opennet.ru

Idugang sa usa ka comment