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