PHP 8.3 serbestberdana zimanê bernamekirinê

Piştî salek pêşveçûnê, serbestberdana zimanê bernamenûsê PHP 8.3 hate pêşkêş kirin. Şaxa nû rêzek taybetmendiyên nû vedihewîne, û her weha gelek guhertinên ku lihevhatinê dişkînin.

Guhertinên sereke di PHP 8.3 de:

  • Di dema klonkirina polê de, gengaz e ku meriv taybetmendiyên bi taybetmendiya "xwendin" ji nû ve bide destpêkirin. Rakirina taybetmendiyên tenê xwendinê tenê di hundurê fonksiyona "__clone" de destûr tê dayîn: tenê xwendin pola Post { fonksiyona giştî __construct( DateTime giştî $createdAt, ) {} fonksiyona giştî __clone() { $this->createdAt = DateTime nû(); // destûr tê dayîn her çend taybetmendiya "createdAt" tenê-xwendin e. } }
  • Karîna bikaranîna berdewamên bi nîşana tîpan di çîn, taybetmendî û hejmartinê de peyda bûye: class Foo { const string BAR = 'baz'; }
  • Piştgiriyek ji bo taybetmendiya "#[Override]" lê zêde kir, bi vê yekê pêşdebir dikare wergêr agahdar bike ku rêbaza nîşankirî hin awayên dêûbav derbas dike. Heger guheztin tune be, wergêr dê xeletiyek nîşan bide.
  • Desthilatdariya nirxên neyînî wekî nîşanek rêzê guhert. Mînakî, dema ku hêmanek bi hejmara "-5" li rêzek vala lê zêde bike û hêmanek din lê zêde bike, berê hêmana duyemîn bi nîşana "0" dihat hilanîn, lê ji guhertoya PHP 8.3 dest pê dike ew ê bi nîşana "-4" were tomarkirin. . $array = []; $array[-5] = 'a'; $array[] = 'b'; var_export ($array); // Bû rêzek (-5 => 'a', 0 => 'b') // Bû rêzik (-5 => 'a', -4 => 'b')
  • Kapasîteya çêkirina çînên nenas di moda tenê xwendinê de zêde kir: $class = pola nû ya tenê xwendinê { fonksiyona giştî __construct( string giştî $foo = 'bar', ) {} };
  • Fonksiyona json_validate() lê zêde kir da ku zû kontrol bike ka rêzek di formata JSON de ye bêyî ku karûbarên dekodkirinê pêk bîne. json_validate(string $json, int $kûrahî = 512, int $flags = 0): bool
  • Rêbazên nû li çîna Randomizer hatine zêdekirin, ku API-ya asta bilind ji bo çêkirina jimar û rêzikên pseudo-random peyda dike: getBytesFromString ji bo çêkirina rêzek bi mezinahiyek diyarkirî, bi karanîna tîpên di rêzek din de bi rêzek rasthatî bikar tîne; getFloat û nextFloat da ku jimareyek xala herikbar a bêserûber a ku dikeve nav rêza diyarkirî biafirînin.
  • Kapasîteya wergirtina domdaran bi karanîna hevoksaziya pola dînamîkî zêde kir: class Foo { const BAR = 'bar'; } $name = 'BAR'; // Berê, ji bo standina berdewamiya BAR-ê, diviyabû te gazî bikira konstant(Foo::class . '::' . $name); // Niha tenê Foo diyar bike::{$name};
  • Nifşa îstîsnayên takekesî (DateMalformedIntervalStringException, DateInvalidOperationException, DateRangeError) zêde kirin di rewşa pirsgirêkên ku di operasyonên ku bi tarîx û demê re dixebitin derdikevin holê.
  • Desthilatdariya çêtir a xeletiyên ku di dema parskirina daneyên serialîzekirî de di fonksiyona unserialize() de çêdibin. Di kêşeya pirsgirêkan de, bêserîkirin() niha li şûna E_NOTICE E_WARNING derdixe.
  • Guhertin di fonksiyona range() de hatine çêkirin. Dema ku hewl tê dayin ku tişt, çavkanî an rêzikên di guhêrbarên ku sînorên rêzê diyar dikin de derbas bikin, û hem jî dema ku di parametreya $step de nirxek neyînî an di her parametreyek de nirxek nediyar diyar dikin de derbas bibin, îstîsnayek tê çêkirin. Dema ku li şûna jimareyan rêzan destnîşan dikin, lîsteyek tîpan niha dikare were derxistin (mînak, "range('5', 'z')").
  • Reftara taybetmendiyan bi taybetmendiyên statîk ve guhezand, yên ku naha taybetmendiyên statîk ên ku ji çîna dêûbav mîras wergirtine derbas dikin.
  • Mîhengên ji bo parastina dorhêla stackê zêde kirin. Rêvebirên zend.max_allowed_stack_size û zend.reserved_stack_size li pelê ini hatine zêdekirin, mezinahiya stikê ya herî zêde destûr û parastî diyar dike. Bername dema ku nêzikî westandina stakê dibe, dema ku stêk ji ferqa di navbera zend.max_allowed_stack_size û zend.reserved_stack_size de tijetir be, dê têk biçe (berî ku xeletiyek dabeşkirinê çêbibe dê înfaz raweste). Ji hêla xwerû ve, nirxa zend.max_allowed_stack_size li 0 tête danîn (0-mezin bixweber tête diyar kirin; ji bo neçalakkirina sînorkirinê, hûn dikarin wê bikin -1).
  • Fonksiyonên nû yên POSIX-ê posix_sysconf(), posix_pathconf(), posix_fpathconf() û posix_eaccess() zêde kirin.
  • Fonksiyona mb_str_pad hate zêdekirin, ku analogek fonksiyona str_pad() ye, ku ji bo xebitandina bi kodkirina pir-byte ya wekî UTF-8 hatî çêkirin.
  • Destûrê dide we ku hûn ji rêbazan girtinan biafirînin û argumanên binavkirî ji wan girtinan re derbas bikin. $test = Testa nû(); $closure = $test-> sêrbaz(…); $closure(a: 'silav', b: 'cîhan');
  • Dema ku xuyangiya domdar di navbeynkaran de hildibijêre, tevger guherî. interface I { public const FOO = 'foo'; } class C implements I { private const FOO = 'foo'; }
  • Kapasîteyên fonksiyonên array_sum(), array_product (), posix_getrlimit (), gc_status (), class_alias (), mysqli_poll (), array_pad () û proc_get_status () hatine berfireh kirin.
  • Kapasîteya derbaskirina nirxek $widths ya neyînî ji mb_strimwidth() re hate derxistin. HêjmarFormatter::TYPE_CURRENCY domdar hat rakirin. Piştgiriya bangkirina fonksiyona ldap_connect() ya bi du parametreyên $host û $port hate sekinandin. Mîhenga opcache.consistency_checks hate rakirin.

Source: opennet.ru

Add a comment