Ukukhishwa kolimi lokuhlela lwe-PHP 8.2

Ngemva konyaka wentuthuko, kwethulwa ukukhululwa kolimi lohlelo lwe-PHP 8.2. Igatsha elisha lihlanganisa uchungechunge lwezici ezintsha, kanye nezinguquko ezimbalwa ezinqamula ukuhambisana.

Ukuthuthukiswa okubalulekile ku-PHP 8.2:

  • Kwengezwe ikhono lokumaka ikilasi njengelifundwayo kuphela. Izakhiwo emakilasini anjalo zingasethwa kanye kuphela, ngemva kwalokho azikwazi ukushintshwa. Ngaphambilini, izakhiwo zesigaba ngasinye zazimakwa njengefundwa kuphela, kodwa manje usungakwazi ukunika amandla le modi kuzo zonke izakhiwo zekilasi ngesikhathi esisodwa. Ukucacisa ifulegi elithi "funda kuphela" ezingeni lekilasi futhi kuvimbela izakhiwo ukuthi zengezwe ngendlela eguqukayo ekilasini. i-readonly class Post { umsebenzi womphakathi __construct( intambo yomphakathi $title, uMbhali womphakathi $author, ) {} } $okuthunyelwe = Okuthunyelwe okusha(/* … */); $post->unknown = 'okungalungile'; // Iphutha: Ayikwazi ukudala impahla eguqukayo Thumela::$akwaziwa
  • Kwengezwe izinhlobo ezihlukene “iqiniso”, “amanga” nelithi “null”, ezingathatha inani elivumelekile elilodwa kuphela futhi zisetshenziswe, isibonelo, ukubuyisela umsebenzi onefulegi lokunqanyulwa kwephutha noma inani elingenalutho. Ngaphambilini, elithi “true”, “false” nelithi “null” lalingasetshenziswa kuphela ngokuhambisana nezinye izinhlobo (isibonelo, “string|false”), kodwa manje zingasetshenziswa ngokwehlukana: function alwaysFalse(): false { return false ; }
  • Inikeza amandla okuhlunga amapharamitha azwelayo kokuphumayo kokulandelela isitaki ngesikhathi sephutha. Ukusika ulwazi oluthile kungase kudingeke uma ulwazi olumayelana namaphutha enzekayo luthunyelwa ngokuzenzakalelayo kumasevisi ezinkampani zangaphandle alandelela izinkinga futhi azise onjiniyela ngawo. Isibonelo, ungakhipha amapharamitha afaka amagama abasebenzisi, amagama ayimfihlo, neziguquko zemvelo ekulandeleni. umsebenzi wokuhlola( $foo, #[\SensitiveParameter] $password, $baz ) {phonsa Okuhlukile okusha('Iphutha'); } test('foo', 'password', 'baz'); Iphutha elibulalayo: Okuhlukile Okungabanjwanga: Iphutha ku-test.php:8 Ukulandelela isitaki: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} iphonswe ku-test.php kulayini 8
  • Kuvunyelwe ukuchaza okungaguquki kuzici (uphawu, indlela yokusebenzisa kabusha ikhodi). Ukungaguquguquki okuchazwe kusici kungafinyelelwa ngesigaba esisebenzisa isici (kodwa hhayi ngegama lesici). isici Foo { public const CONSTANT = 1; ibha yomsebenzi womphakathi(): int { return self::CONSTANT; // Iphutha elibulalayo } } Ibha yekilasi {sebenzisa i-Foo; } var_dump(Ibha::CONSTANT); // 1
  • Kwengezwe ikhono lokucacisa izinhlobo kufomu elivamile elihlukanisayo (i-DNF, Ifomu Le-Disjunctive Normal), elikuvumela ukuthi uhlanganise inhlanganisela yezinhlobo (amaqoqo ezinhlobo ezimbili noma ngaphezulu) kanye nokuphambana kwezinhlobo (izinhlobo amanani azo awela ngaphansi kokuningi. izinhlobo ngasikhathi sinye). class Foo {ibha yomsebenzi womphakathi((A&B)|null $entity) {uma ($entity === null) { return null; } buyisela i-$entity; }}
  • Kuphakanyiswe isandiso esisha esithi “Okungahleliwe” esinemisebenzi namakilasi okukhiqiza izinombolo ezingamanga nokulandelana okungahleliwe. Imojula inikeza isikhombimsebenzisi esigxile entweni, ikuvumela ukuthi ukhethe izinjini ezihlukene zokukhiqiza izinombolo ezingahleliwe, kufaka phakathi lezo ezifanele ukusetshenziswa ku-cryptography, futhi inikeza imisebenzi eyisizayo, isibonelo, ukuxuba ngokungahleliwe ama-arrays nezintambo, ukukhetha okhiye abangahleliwe, ukusetshenziswa kanyekanye kwamajeneretha amaningana anesimo sakho esizimele. $rng = $is_production ? new Random\Engine\Secure() : new Random\Engine\Mt19937(1234); $randomizer = iRandom\Randomizer entsha($rng); $randomizer->shuffleString('foobar');
  • Kusetshenziswe ukuguqulwa kwecala elizimele lendawo. Imisebenzi efana ne-strtolower() kanye ne-strtoupper() manje ihlala iguqula isimo sezinhlamvu kububanzi be-ASCII njengokungathi isethwe endaweni ethi "C".
  • Kungezwe imisebenzi emisha: 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.
  • Kungezwe izindlela ezintsha: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype.
  • Ikhono lokudala izakhiwo ekilasini lihoxisiwe. Ku-PHP 9.0, ukufinyelela izakhiwo ezingachazwanga ekuqaleni ekilasini kuzoholela ephutha (ErrorException). Amakilasi anikeza izindlela __get kanye __setha zokudala izakhiwo, noma izakhiwo eziguqukayo ku-stdClass, zizoqhubeka nokusebenza zingashintshiwe, umsebenzi osobala kuphela onezici ezingekho ozosekelwa ukuze kuvikelwe unjiniyela kuziphazamisi ezifihliwe. Ukuze kulondolozwe umsebenzi wekhodi endala, isibaluli se-“#[AllowDynamicProperties]” siyaphakanyiswa, okuvumela ukusetshenziswa kwezici eziguqukayo.
  • Ikhono lokushintsha amanani ahlukile ube yiyunithi yezinhlamvu usebenzisa izisho ezithi "${var}" kanye ne-${(var)} yehlisiwe. Usekelo lokushintshwa okuvame ukusetshenziswa kwe-"{$var}" kanye ne-"$var" kugciniwe. Isibonelo: "Sawubona {$world}"; Kulungile "Sawubona $world"; Kulungile "Sawubona ${world}"; Kwehlisiwe: Ukusebenzisa i-${} kuyunithi yezinhlamvu kuhoxisiwe
  • Izingcingo ezehlisiwe ezisekelwa kancane ezingabizwa ngokuthi "call_user_func($callable)" kodwa azisekeli ukushaya ngendlela "$callable()": "self::indlela" "parent::indlela" "static" ::indlela " ["self", "indlela"] ["umzali", "indlela"] ["static", "method"] ["Foo", "Bar::method"] [i-Foo entsha, "Ibha: :indlela" ]
  • I- error_log_mode Directive yengezwe kuzilungiselelo, okukuvumela ukuthi unqume imodi yokufinyelela kulogi yephutha.

Source: opennet.ru

Engeza amazwana