Rilaxx tal-lingwa ta' programmar PHP 8.3

Wara sena ta 'żvilupp, ġie ppreżentat ir-rilaxx tal-lingwa ta' programmar PHP 8.3. Il-fergħa l-ġdida tinkludi serje ta 'karatteristiċi ġodda, kif ukoll diversi bidliet li jiksru l-kompatibilità.

Bidliet ewlenin fil-PHP 8.3:

  • Waqt il-klonazzjoni tal-klassi, huwa possibbli li jerġgħu jibdew il-proprjetajiet bl-attribut "readonly". Proprjetajiet readonly overriding huwa permess biss ġewwa l-funzjoni “__clone”: readonly class Post { public function __construct ( public DateTime $createdAt, ) {} public function __clone () { $this->createdAt = new DateTime (); // permess anke jekk il-proprjetà "createdAt" hija ta' qari biss. } }
  • Ġiet ipprovduta l-abbiltà li jintużaw kostanti b'indikazzjoni tat-tip fi klassijiet, karatteristiċi u enumerazzjonijiet: class Foo { const string BAR = 'baz'; }
  • Appoġġ miżjud għall-attribut "#[Override]", li bih l-iżviluppatur jista 'jinforma lill-interpretu li l-metodu mmarkat jegħleb xi metodu ġenitur. Jekk ma jkunx hemm override, l-interpretu se juri żball.
  • Immaniġġjar mibdul ta' valuri negattivi bħala indiċi ta' firxa. Per eżempju, meta żżid element bin-numru "-5" ma 'firxa vojta u żżid element ieħor, qabel it-tieni element kien issejvjat bl-indiċi "0", iżda li jibda mill-verżjoni PHP 8.3 se jiġi ffrankat bl-indiċi "-4" . $array = []; $array[-5] = 'a'; $array [] = 'b'; var_export($array); // Kien firxa (-5 => 'a', 0 => 'b') // Sar firxa (-5 => 'a', -4 => 'b')
  • Żid il-ħila li jinħolqu klassijiet anonimi fil-modalità ta' qari biss: $class = klassi readonly ġdida { public function __construct( public string $foo = 'bar', ) {} };
  • Miżjud il-funzjoni json_validate() biex tiċċekkja malajr jekk string hijiex f'format JSON mingħajr ma twettaq operazzjonijiet ta 'dekodifikazzjoni. json_validate(string $json, int $depth = 512, int $flags = 0): bool
  • Ġew miżjuda metodi ġodda mal-klassi Randomizer, li tipprovdi API ta 'livell għoli għall-ġenerazzjoni ta' numri u sekwenzi psewdo-random: getBytesFromString għall-ġenerazzjoni ta 'sekwenza ta' daqs partikolari, bl-użu f'ordni każwali tal-karattri preżenti f'sekwenza oħra; getFloat u nextFloat biex jiġġeneraw numru b'punt floating aleatorju li jaqa' fil-medda speċifikata.
  • Miżjud il-kapaċità li jiġu rkuprati l-kostanti bl-użu tas-sintassi tal-klassi dinamika: klassi Foo { const BAR = 'bar'; } $name = 'BAR'; // Preċedentement, biex tirkupra l-kostanti BAR, kellek issejjaħ constant(Foo::class . '::' . $name); // Issa speċifika Foo::{$name};
  • Ġenerazzjoni miżjuda ta' eċċezzjonijiet individwali (DateMalformedIntervalStringException, DateInvalidOperationException, DateRangeError) f'każ ta' problemi li jinqalgħu f'operazzjonijiet li jaħdmu bid-dati u l-ħin.
  • Immaniġġjar imtejjeb ta 'żbalji li jseħħu waqt parsing ta' data serialized fil-funzjoni unserialize(). F'każ ta' problemi, unserialize() issa joħroġ E_WARNING minflok E_NOTICE.
  • Saru bidliet fil-funzjoni range(). Eċċezzjoni tiġi ġġenerata meta tipprova tgħaddi oġġetti, riżorsi jew matriċi f'varjabbli li jiddefinixxu l-konfini tal-firxa, kif ukoll meta jiġi speċifikat valur negattiv fil-parametru $step jew valur mhux definit fi kwalunkwe parametru. Lista ta' karattri issa tista' toħroġ meta jiġu speċifikati strings minflok numri (per eżempju, "range('5', 'z')").
  • Biddlet l-imġiba tal-karatteristiċi bi proprjetajiet statiċi, li issa jegħlbu l-proprjetajiet statiċi li ntirtu mill-klassi ġenitur.
  • Settings miżjuda għall-protezzjoni tal-overflow tal-munzell. Id-direttivi zend.max_allowed_stack_size u zend.reserved_stack_size ġew miżjuda mal-fajl ini, li jiddefinixxu d-daqs massimu permess u riżervat tal-munzell. Il-programm se jikkraxxja meta jersaq lejn l-eżawriment tal-munzell, meta l-munzell ikun mimli aktar mid-differenza bejn zend.max_allowed_stack_size u zend.reserved_stack_size (l-eżekuzzjoni tieqaf qabel ma sseħħ ħsara fis-segmentazzjoni). B'mod awtomatiku, il-valur zend.max_allowed_stack_size huwa ssettjat għal 0 (0—id-daqs huwa determinat awtomatikament; biex tiddiżattiva l-limitazzjoni, tista 'tissettjaha għal -1).
  • Miżjuda funzjonijiet POSIX ġodda posix_sysconf(), posix_pathconf(), posix_fpathconf() u posix_eaccess().
  • Il-funzjoni mb_str_pad ġiet miżjuda, li hija analoga tal-funzjoni string str_pad(), iddisinjata biex taħdem b'kodifikazzjonijiet multi-byte bħal UTF-8.
  • Jippermettilek toħloq għeluq minn metodi u tgħaddi argumenti msemmija għal dawk l-għeluq. $test = Test ġdid (); $għeluq = $test->maġija(…); $għeluq (a: 'hello', b: 'dinja');
  • Imġieba mibdula meta timmaniġġja l-viżibilità tal-kostanti fl-interfaces. interface I { public const FOO = 'foo'; } klassi C timplimenta I { private const FOO = 'foo'; }
  • Il-kapaċitajiet tal-funzjonijiet array_sum(), array_product(), posix_getrlimit(), gc_status(), class_alias(), mysqli_poll(), array_pad() u proc_get_status() ġew estiżi.
  • Il-ħila li tgħaddi valur negattiv ta' $widths lil mb_strimwidth() ġiet deprecata. Il-kostanti NumberFormatter::TYPE_CURRENCY tneħħiet. L-appoġġ għas-sejħa tal-funzjoni ldap_connect() b'żewġ parametri $host u $port twaqqaf. Is-setting opcache.consistency_checks tneħħa.

Sors: opennet.ru

Żid kumment