PHP 8.3 programmeartaal release

Nei in jier fan ûntwikkeling waard de frijlitting fan 'e programmeartaal PHP 8.3 presintearre. De nije tûke omfettet in searje nije funksjes, lykas ferskate feroarings dy't kompatibiliteit brekke.

Wichtige wizigingen yn PHP 8.3:

  • Tidens it klonen fan 'e klasse is it mooglik om eigenskippen opnij te initialisearjen mei it "allinich lêze" attribút. It oerskriuwen fan allinich lêseigenskippen is allinich tastien binnen de funksje "__clone": read-only klasse Post { publike funksje __construct (publike DateTime $createdAt, ) {} iepenbiere funksje __clone () { $this->createdAt = new DateTime(); // tastien ek al is de "createdAt" eigenskip is allinnich-lês. } }
  • De mooglikheid om konstanten te brûken mei type-yndikaasje yn klassen, eigenskippen en enumeraasjes is foarsjoen: klasse Foo { const string BAR = 'baz'; }
  • Stipe tafoege foar it attribút "#[Override]", wêrmei de ûntwikkelder de tolk ynformearje kin dat de markearre metoade guon âldermetoade oerskriuwt. As der gjin override is, sil de tolk in flater werjaan.
  • Feroare behanneling fan negative wearden as array-yndeks. Bygelyks, by it tafoegjen fan in elemint mei nûmer "-5" oan in lege array en it tafoegjen fan in oar elemint, earder waard it twadde elemint bewarre mei yndeks "0", mar fanôf ferzje PHP 8.3 sil it bewarre wurde mei yndeks "-4" . $array = []; $array[-5] = 'a'; $array[] = 'b'; var_export($array); // Was array (-5 => 'a', 0 => 'b') // Werd array (-5 => 'a', -4 => 'b')
  • De mooglikheid tafoege om anonime klassen te meitsjen yn allinich-lêzen modus: $class = nije read-only class { publike funksje __construct (publike string $ foo = 'bar', ) {} };
  • Added json_validate () funksje om fluch kontrolearje oft in tekenrige is yn JSON formaat sûnder it útfieren fan dekodearjen operaasjes. json_validate(string $json, int $depth = 512, int $flags = 0): bool
  • Nije metoaden binne tafoege oan 'e Randomizer-klasse, dy't in API op hege nivo leveret foar it generearjen fan pseudo-willekeurige nûmers en sekwinsjes: getBytesFromString foar it generearjen fan in tekenrige fan in opjûne grutte, mei yn willekeurige folchoarder de tekens oanwêzich yn in oare tekenrige; getFloat en nextFloat om in willekeurich driuwend puntnûmer te generearjen dat binnen it opjûne berik falt.
  • De mooglikheid tafoege om konstanten op te heljen mei dynamyske klassesyntaksis: klasse Foo {const BAR = 'bar'; } $name = 'BAR'; // Earder, om de BAR-konstante op te heljen, moasten jo konstante neame (Foo::klasse . '::' . $name); // Spesifisearje no gewoan Foo::{$name};
  • Generaasje fan yndividuele útsûnderings tafoege (DateMalformedIntervalStringException, DateInvalidOperationException, DateRangeError) yn gefal fan problemen dy't ûntsteane yn operaasjes dy't wurkje mei datums en tiid.
  • Ferbettere ôfhanneling fan flaters dy't foarkomme by it parsearjen fan serialisearre gegevens yn 'e unserialize () -funksje. Yn gefal fan problemen, unserialize () no jout E_WARNING ynstee fan E_NOTICE.
  • Feroarings binne makke oan de funksje berik (). In útsûndering wurdt oanmakke by it besykjen om objekten, boarnen of arrays troch te jaan yn fariabelen dy't berikgrinzen definiearje, en ek by it opjaan fan in negative wearde yn 'e $stap-parameter of in net-definieare wearde yn elke parameter. In list mei karakters kin no wurde útfierd by it opjaan fan snaren ynstee fan sifers (bygelyks "berik('5', 'z')").
  • Feroare it gedrach fan trekken mei statyske eigenskippen, dy't no statyske eigenskippen erfde fan 'e âlderklasse oerskriuwe.
  • Tafoege ynstellings foar stack oerlêst beskerming. De zend.max_allowed_stack_size en zend.reserved_stack_size rjochtlinen binne tafoege oan de ini triem, bepale de maksimum tastiene en reservearre stack grutte. It programma sil crashe as it benaderjen fan stack útputting, doe't de steapel is fol mear as it ferskil tusken zend.max_allowed_stack_size en zend.reserved_stack_size (útfiering sil stopje foar in segmentation flater optreedt). Standert is de zend.max_allowed_stack_size wearde ynsteld op 0 (0 - de grutte wurdt automatysk bepaald; om de beheining út te skeakeljen, kinne jo it ynstelle op -1).
  • Nije POSIX-funksjes tafoege posix_sysconf (), posix_pathconf (), posix_fpathconf () en posix_eaccess ().
  • De mb_str_pad funksje is tafoege, dat is in analoog fan de str_pad () string funksje, ûntwurpen om te wurkjen mei multi-byte kodearring lykas UTF-8.
  • Hjirmei kinne jo slutingen meitsje fan metoaden en neamde arguminten trochjaan oan dy slutingen. $test = new Test(); $closure = $test->magic(...); $closure(a: 'hallo', b: 'wrâld');
  • Feroare gedrach by it behanneljen fan de sichtberens fan konstanten yn ynterfaces. ynterface I { public const FOO = 'foo'; } klasse C ymplementearret I {privee const FOO = 'foo'; }
  • De mooglikheden fan de funksjes array_sum(), array_product(), posix_getrlimit(), gc_status(), class_alias(), mysqli_poll(), array_pad() en proc_get_status() binne útwreide.
  • De mooglikheid om in negative $widths wearde troch te jaan oan mb_strimwidth () is ôfret. De NumberFormatter :: TYPE_CURRENCY konstante is fuortsmiten. Stipe foar it oproppen fan de ldap_connect() -funksje mei twa parameters $host en $port is staakt. De opcache.consistency_checks ynstelling is fuortsmiten.

Boarne: opennet.ru

Add a comment