Itusilẹ ti ede siseto PHP 8.2

Lẹhin ọdun kan ti idagbasoke, itusilẹ ti ede siseto PHP 8.2 ti gbekalẹ. Ẹka tuntun pẹlu lẹsẹsẹ awọn ẹya tuntun, ati ọpọlọpọ awọn ayipada ti o fọ ibamu.

Awọn ilọsiwaju bọtini ni PHP 8.2:

  • Ṣe afikun agbara lati samisi kilasi kan bi kika-nikan. Awọn ohun-ini ni iru awọn kilasi le ṣee ṣeto ni ẹẹkan, lẹhinna wọn kii yoo wa fun iyipada. Ni iṣaaju, awọn ohun-ini kilasi kọọkan le jẹ samisi kika-nikan, ṣugbọn ni bayi o le tan ipo yii fun gbogbo awọn ohun-ini kilasi ni ẹẹkan. Pato asia “kika nikan” ni ipele kilasi tun ṣe idiwọ afikun agbara ti awọn ohun-ini si kilasi naa. Ifiweranṣẹ kilasi kika nikan {iṣẹ gbogbo eniyan __construct (okun ilu $akọle, onkowe $author,) {} } $post = Ifiweranṣẹ tuntun (/* … */); $post->unknown = 'aṣiṣe'; // Aṣiṣe: Ko le ṣẹda ìmúdàgba ini Post :: $ aimọ
  • Awọn oriṣi lọtọ ti a ṣafikun “otitọ”, “eke” ati “asan”, eyiti o le gba iye to wulo nikan ti a lo, fun apẹẹrẹ, lati da iṣẹ kan pada pẹlu asia ifopinsi aṣiṣe tabi iye ṣofo. Ni iṣaaju, “otitọ”, “eke” ati “asan” le ṣee lo ni apapo pẹlu awọn iru miiran (fun apẹẹrẹ, “okun | iro”), ṣugbọn nisisiyi wọn le ṣee lo lọtọ: iṣẹ nigbagbogbo eke (): eke {pada eke ; }
  • Ti pese agbara lati ṣe àlẹmọ awọn eto ifura ni iṣelọpọ itopase akopọ ni akoko aṣiṣe kan. Gige alaye kan le nilo nigbati alaye nipa awọn aṣiṣe ti o waye ni a firanṣẹ laifọwọyi si awọn iṣẹ ẹnikẹta ti o tọpa awọn iṣoro ati sọfun awọn idagbasoke nipa wọn. Fun apẹẹrẹ, o le yọkuro awọn paramita lati itọpa ti o pẹlu awọn orukọ olumulo, awọn ọrọ igbaniwọle, ati awọn oniyipada ayika. igbeyewo iṣẹ ($ foo, #[\ SensitiveParameter] $ ọrọigbaniwọle, $ baz ) {ju titun Iyatọ ('Aṣiṣe'); } idanwo ('foo', 'ọrọigbaniwọle', 'baz'); Aṣiṣe buburu: Iyatọ ti a ko mu: Aṣiṣe ni idanwo.php: 8 Atọpa akopọ: #0 test.php(11): idanwo ('foo', Nkan (SensitiveParameterValue), 'baz') #1 {akọkọ} ti a sọ sinu test.php lori laini 8
  • Ti gba laaye lati ṣalaye awọn alakan ni awọn abuda (iwa, ẹrọ kan fun lilo koodu). Awọn ibakan ti a ṣalaye ni ami kan le wọle nipasẹ kilasi ti o lo ami-ara (ṣugbọn kii ṣe nipasẹ orukọ aami). abuda Foo { public const CONSTANT = 1; àkọsílẹ iṣẹ bar (): int {pada ara :: CONSTANT; // Aṣiṣe buburu } } Pẹpẹ kilasi {lo Foo; } var_dump (Pẹpẹ :: CONSTANT); // 1
  • Fi kun agbara lati tokasi awọn oriṣi ni fọọmu deede disjunctive (DNF, Fọọmu Deede Disjunctive), eyiti o fun ọ laaye lati darapo apapọ awọn oriṣi (awọn akojọpọ ti awọn oriṣi meji tabi diẹ sii) ati ikorita ti awọn oriṣi (awọn oriṣi ti iye wọn ṣubu labẹ ọpọlọpọ awọn oriṣi nigbakanna). kilasi Foo {bar iṣẹ ti gbogbo eniyan ((A&B)|asan $entity) {ti o ba jẹ ($ nkankan === asan) {pada asan; } ipadabọ $ nkankan; }}
  • Ifaagun tuntun “ID” ti ni idamọran pẹlu awọn iṣẹ ati awọn kilasi fun ti ipilẹṣẹ awọn nọmba airotẹlẹ-ID ati awọn ilana. Module naa n pese wiwo ti o da lori ohun, ngbanilaaye lati yan awọn ẹrọ oriṣiriṣi fun ṣiṣẹda awọn nọmba airotẹlẹ-ID, pẹlu awọn ti o dara fun lilo ninu cryptography, ati pese awọn iṣẹ iranlọwọ, fun apẹẹrẹ, fun dapọ awọn ọna ati awọn okun laileto, yiyan awọn bọtini laileto, lilo nigbakanna ti ọpọlọpọ awọn olupilẹṣẹ pẹlu ipinlẹ ominira tirẹ. $rng = $is_production? titun ID \ Engine \ Secure (): titun ID \ Engine \ Mt19937 (1234); $randomizer = ID tuntun \ Randomizer ($ rng); $ randomizer-> shuffleString ('foobar');
  • Iyipada ọran ominira-agbegbe ti a ṣe. Awọn iṣẹ bii strtolower () ati strtoupper () ni bayi nigbagbogbo ṣe iyipada ọran awọn ohun kikọ ni sakani ASCII, bi nigbati o ba ṣeto agbegbe si “C”.
  • Awọn iṣẹ tuntun ti a ṣafikun: 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.
  • Awọn ọna tuntun ti a ṣafikun: mysqli :: execute_query, ZipArchive :: getStreamIndex, ZipArchive :: getStreamName, ZipArchive :: clearError, ReflectionFunction :: isAnonymous, ReflectionMethod :: hasPrototype.
  • Agbara lati ṣẹda awọn ohun-ini ni agbara ni kilaasi kan ti parẹ. Ni PHP 9.0, iraye si awọn ohun-ini ti ko ni asọye lakoko ni kilasi yoo ja si aṣiṣe (Aṣiṣe Exception). Awọn kilasi ti o pese awọn ọna __get ati __set fun ṣiṣẹda awọn ohun-ini, tabi awọn ohun-ini ti o ni agbara ni stdClass yoo tẹsiwaju lati ṣiṣẹ laisi awọn ayipada, iṣẹ ti ko tọ nikan pẹlu awọn ohun-ini ti ko si ni yoo ṣe atilẹyin lati daabobo oluṣe idagbasoke lati awọn idun ti o farapamọ. Lati ṣe itọju iṣẹ ti koodu atijọ, “#[AllowDynamicProperties]” abuda ti dabaa, gbigba lilo awọn ohun-ini agbara.
  • Agbara lati paarọ awọn iye oniyipada sinu awọn gbolohun ọrọ nipa lilo "${var}" ati ${(var)}" awọn ikosile ti ti parẹ. Atilẹyin fun lilo wọpọ "{$var}" ati awọn iyipada "$var" ti wa ni idaduro. Fun apẹẹrẹ: "Hello {$ aye}"; O dara "Hello $ aye"; O dara "Hello ${aye}"; Idinku: Lilo ${} ninu awọn gbolohun ọrọ ti wa ni idaduro
  • Awọn ipe ti o ni atilẹyin apakan apakan ti o le pe nipasẹ "call_user_func ($ callable)" ṣugbọn ko ṣe atilẹyin pipe ni fọọmu "$ callable ()": "ara:: ọna" "obi:: ọna" "aimi :: Ọna" ["ara", "ọna"] ["obi", "ọna"] ["imi", "ọna ẹrọ"] ["Ami", "Ọna"]
  • Ilana aṣiṣe_log_mode ti ṣafikun si awọn eto, gbigba ọ laaye lati pinnu ipo iwọle si akọọlẹ aṣiṣe.

orisun: opennet.ru

Fi ọrọìwòye kun