PHP 8.3 programazio-lengoaia kaleratzea

Urtebeteko garapenaren ondoren, PHP 8.3 programazio-lengoaiaren bertsioa aurkeztu zen. Adar berriak ezaugarri berri batzuk biltzen ditu, baita bateragarritasuna hausten duten hainbat aldaketa ere.

Funtsezko aldaketak PHP 8.3-n:

  • Klaseen klonazioan, "readonly" atributuarekin propietateak berriro hasieratzea posible da. Irakurtzeko soilik propietateak gainidaztea β€œ__clone” funtzioaren barruan bakarrik onartzen da: irakurtzeko soilik klasea Post { public function __construct( public DateTime $createdAt, ) {} public function __clone() { $this->createdAt = new DateTime(); // onartzen da "createdAt" propietatea irakurtzeko soilik den arren. }}
  • Klaseetan, ezaugarrietan eta zenbaketetan mota-adierazpena duten konstanteak erabiltzeko gaitasuna eman da: class Foo { const string BAR = 'baz'; }
  • "#[Gainarazi]" atributuaren euskarria gehitu da, eta horrekin garatzaileak interpreteari jakinarazi diezaioke markatutako metodoak metodo nagusiren bat gainidazten duela. Gaingabetzerik ez badago, interpreteak errore bat bistaratuko du.
  • Balio negatiboen kudeaketa aldatu da array-indize gisa. Adibidez, matrize huts batean β€œ-5” zenbakia duen elementu bat gehitzean eta beste elementu bat gehitzean, aurretik bigarren elementua β€œ0” indizearekin gordetzen zen, baina PHP 8.3 bertsiotik hasita β€œ-4” indizearekin gordeko da. . $array = []; $array[-5] = 'a'; $array[] = 'b'; var_export($array); // Array zen (-5 => 'a', 0 => 'b') // Array bihurtu zen (-5 => 'a', -4 => 'b')
  • Klase anonimoak irakurtzeko moduan sortzeko gaitasuna gehitu da: $class = new readonly class { public function __construct( public string $foo = 'bar', ) {} };
  • json_validate() funtzioa gehitu da kate bat JSON formatuan dagoen ala ez deskodetzeko eragiketak egin gabe egiaztatzeko. json_validate (katea $json, int $sakonera = 512, int $flags = 0): bool
  • Metodo berriak gehitu zaizkio Randomizer klaseari, maila altuko API bat eskaintzen duen sasi-ausazko zenbakiak eta sekuentziak sortzeko: getBytesFromString tamaina jakin bateko kate bat sortzeko, beste kate batean dauden karaktereak ausazko ordenan erabiliz; getFloat eta nextFloat zehaztutako barrutian sartzen den ausazko koma mugikorreko zenbaki bat sortzeko.
  • Klase dinamikoaren sintaxia erabiliz konstanteak berreskuratzeko gaitasuna gehitu da: class Foo { const BAR = 'bar'; } $name = 'BARRA'; // Aurretik, BAR konstantea berreskuratzeko, constant(Foo::class . '::' . $name) deitu behar zenion; // Orain zehaztu Foo::{$izena};
  • Salbuespen indibidualen sorrera gehitu da (DateMalformedIntervalStringException, DateInvalidOperationException, DateRangeError) datak eta orduak lantzen dituzten eragiketetan sortzen diren arazoen kasuan.
  • Unserialize() funtzioan serializatutako datuak analizatzean gertatzen diren erroreen kudeaketa hobetu da. Arazoak izanez gero, unserialize()-k orain E_WARNING igortzen du E_NOTICE-ren ordez.
  • Aldaketak egin dira range() funtzioan. Salbuespen bat sortzen da barrutiaren mugak definitzen dituzten aldagaietan objektuak, baliabideak edo matrizeak pasatzen saiatzean, baita $step parametroan balio negatiboa edo definitu gabeko balio bat zehazten denean ere edozein parametrotan. Karaktere zerrenda bat atera daiteke orain zenbakien ordez kateak zehazten direnean (adibidez, β€œbarrutia('5', 'z')").
  • Propietate estatikoekin ezaugarrien portaera aldatu da, eta orain klase nagusitik heredatutako propietate estatikoak gainidazten dituzte.
  • Pila gainezka babesteko ezarpenak gehitu dira. zend.max_allowed_stack_size eta zend.reserved_stack_size direktibak ini fitxategian gehitu dira, gehienez baimendutako eta erreserbatutako pila-tamaina definituz. Programak huts egingo du pila agortzear dagoenean, pila beteta dagoenean zend.max_allowed_stack_size eta zend.reserved_stack_size-ren arteko aldea baino gehiago (exekuzioa geldituko da segmentazio-akats bat gertatu baino lehen). Lehenespenez, zend.max_allowed_stack_size balioa 0-n ezartzen da (0β€”tamaina automatikoki zehazten da; muga desgaitzeko, -1-ean ezar dezakezu).
  • POSIX funtzio berriak gehitu dira posix_sysconf(), posix_pathconf(), posix_fpathconf() eta posix_eaccess().
  • mb_str_pad funtzioa gehitu da, str_pad() kate funtzioaren analogoa dena, UTF-8 bezalako byte anitzeko kodifikazioekin lan egiteko diseinatua.
  • Metodoetatik itxierak sortzeko eta izendun argumentuak itxiera horietara pasatzeko aukera ematen du. $test = proba berria (); $itxiera = $proba->magia(…); $ itxiera (a: 'kaixo', b: 'mundua');
  • Interfazeetako konstanteen ikusgarritasuna kudeatzeko portaera aldatu da. interface I { public const FOO = 'foo'; } C klaseko tresnak I { private const FOO = 'foo'; }
  • Array_sum(), array_product(), posix_getrlimit(), gc_status(), class_alias(), mysqli_poll(), array_pad() eta proc_get_status() funtzioen gaitasunak zabaldu dira.
  • $widths balio negatiboa mb_strimwidth()-ri pasatzeko gaitasuna zaharkituta geratu da. NumberFormatter::TYPE_CURRENCY konstantea kendu da. $host eta $port bi parametrorekin ldap_connect() funtzioa deitzeko laguntza eten egin da. Opcache.consistency_checks ezarpena kendu da.

Iturria: opennet.ru

Gehitu iruzkin berria