Liberazione di lingua di prugrammazione PHP 8.3

Dopu un annu di sviluppu, a liberazione di a lingua di prugrammazione PHP 8.3 hè stata presentata. U novu ramu include una seria di funzioni novi, è ancu parechji cambiamenti chì rompenu a cumpatibilità.

Cambiamenti chjave in PHP 8.3:

  • Durante a clonazione di classi, hè pussibule reinizializà e proprietà cù l'attributu "readonly". L'annullamentu di e proprietà di sola lettura hè permessu solu in a funzione "__clone": class readonly Post { public function __construct (public DateTime $createdAt, ) {} public function __clone () { $this->createdAt = new DateTime (); // permessu ancu se a pruprietà "createdAt" hè di sola lettura. } }
  • A capacità di utilizà custanti cù indicazione di tipu in classi, tratti è enumerazioni hè stata furnita: class Foo { const string BAR = 'baz'; }
  • Aghjunghje un supportu per l'attributu "#[Override]", cù quale u sviluppatore pò informà à l'interprete chì u metudu marcatu annulla qualchì metudu parent. Se ùn ci hè micca override, l'interprete mostrarà un errore.
  • A gestione cambiata di i valori negativi cum'è un indice di array. Per esempiu, quandu aghjunghjenu un elementu cù u numeru "-5" à un array viotu è aghjunghje un altru elementu, prima u sicondu elementu era salvatu cù l'indice "0", ma partendu da a versione PHP 8.3 serà salvatu cù l'indice "-4". . $array = []; $array[-5] = 'a'; $array [] = 'b'; var_export($array); // Era array (-5 => 'a', 0 => 'b') // Diventa array (-5 => 'a', -4 => 'b')
  • Aggiunta l'abilità di creà classi anonimi in modu di sola lettura: $class = nova classa di sola lettura { public function __construct (public string $foo = 'bar', ) {} };
  • Aggiunta a funzione json_validate () per verificà rapidamente se una stringa hè in formatu JSON senza eseguisce operazioni di decodificazione. json_validate(string $json, int $depth = 512, int $flags = 0): bool
  • I metudi novi sò stati aghjuntu à a classa Randomizer, chì furnisce una API d'altu livellu per generà numeri pseudo-aleatoriu è sequenze: getBytesFromString per generà una stringa di una certa dimensione, utilizendu in ordine aleatoriu i caratteri prisenti in una altra stringa; getFloat è nextFloat per generà un numeru aleatoriu in virgule flottante chì si trova in a gamma specifica.
  • Aggiunta a capacità di ricuperà custanti utilizendu a sintassi di classi dinamica: class Foo { const BAR = 'bar'; } $name = 'BAR'; // Prima, per ricuperà a custante BAR, avete bisognu di chjamà constant(Foo::class . '::' . $name); // Avà basta à specificà Foo::{$name};
  • Aggiunta generazione di eccezzioni individuali (DateMalformedIntervalStringException, DateInvalidOperationException, DateRangeError) in casu di prublemi chì si sviluppanu in operazioni chì travaglianu cù date è ora.
  • Gestione mejorata di l'errori chì si verificanu durante l'analisi di dati serializzati in a funzione unserialize(). In casu di prublemi, unserialize () avà emette E_WARNING invece di E_NOTICE.
  • I cambiamenti sò stati fatti à a funzione range(). Una eccezzioni hè generata quandu pruvate di passà l'uggetti, risorse o arrays in variàbili chì definiscenu i limiti di u range, è ancu quandu si specifica un valore negativu in u paràmetru $step o un valore indefinitu in ogni paràmetru. Fornitu output di una lista di caratteri quandu specificanu stringhe invece di numeri (per esempiu, "range('5', 'z')").
  • Cambiatu u cumpurtamentu di i tratti cù proprietà statiche, chì avà annullanu e proprietà statiche ereditate da a classa parent.
  • Configurazione aghjunta per a prutezzione di stack overflow. I direttivi zend.max_allowed_stack_size è zend.reserved_stack_size sò stati aghjuntu à u schedariu ini, definendu a dimensione massima di stack permessa è riservata. U prugramma crash quandu si avvicina à l'esaurimentu di stack, quandu a pila hè piena più di a diffarenza trà zend.max_allowed_stack_size è zend.reserved_stack_size (l'esekzione si ferma prima chì un difettu di segmentazione). Per automaticamente, u valore zend.max_allowed_stack_size hè stabilitu à 0 (0 - a dimensione hè determinata automaticamente; per disattivà a limitazione, pudete stabilisce à -1).
  • Aggiunte novi funzioni POSIX posix_sysconf (), posix_pathconf (), posix_fpathconf () è posix_eaccess ().
  • A funzione mb_str_pad hè stata aghjunta, chì hè un analogu di a funzione di stringa str_pad (), pensata per travaglià cù codificazioni multi-byte cum'è UTF-8.
  • Permette di creà chjusi da i metudi è passà argumenti chjamati à quelli chjusi. $test = new Test (); $chiusura = $test->magia(…); $closure(a: 'salutu', b: 'mondu');
  • Cumportamentu cambiatu quandu manipule a visibilità di custanti in l'interfacce. interfaccia I { public const FOO = 'foo'; } class C implements I { private const FOO = 'foo'; }
  • E capacità di e funzioni array_sum(), array_product(), posix_getrlimit(), gc_status(), class_alias(), mysqli_poll(), array_pad() è proc_get_status() sò state ampliate.
  • A capacità di passà un valore negativu $widths à mb_strimwidth() hè stata deprecata. A constante NumberFormatter::TYPE_CURRENCY hè stata eliminata. U supportu per chjamà a funzione ldap_connect() cù dui paràmetri $host è $port hè stata interrotta. L'impostazione opcache.consistency_checks hè stata eliminata.

Source: opennet.ru

Add a comment