Les proves alfa de PHP 8.2 han començat

S'ha presentat la primera versió alfa de la nova branca del llenguatge de programació PHP 8.2. El llançament està previst per al 24 de novembre. Les principals innovacions que ja estan disponibles per provar o previstes per a la seva implementació en PHP 8.2:

  • S'han afegit tipus separats "fals" i "nul", que es poden utilitzar, per exemple, per a una funció per retornar un indicador de finalització d'error o un valor buit. Abans, "fals" i "null" només es podien utilitzar conjuntament amb altres tipus (per exemple, "cadena|fals"), però ara es poden utilitzar per separat: function alwaysFalse(): false { return false; }
  • S'ha afegit la possibilitat de marcar una classe com a només de lectura. Les propietats d'aquestes classes només es poden establir una vegada, després de la qual no estaran disponibles per al canvi. Abans, les propietats de classe individuals es podien marcar com a només lectura, però ara podeu activar aquest mode per a totes les propietats de classe alhora. Especificar la marca "només lectura" a nivell de classe també bloqueja l'addició dinàmica de propietats a la classe. classe només lectura Publicació { funció pública __construct( cadena pública $títol, autor públic $autor, ) {} } $publicació = publicació nova (/* … */); $post->unknown = 'incorrecte'; // Error: no es pot crear la propietat dinàmica Post::$unknown
  • La capacitat de crear dinàmicament propietats en una classe (com ara "post->desconegut" a l'exemple anterior) ha quedat obsoleta. A PHP 9.0, l'accés a propietats que no estan definides inicialment a la classe donarà lloc a un error (ErrorException). Les classes que proporcionen mètodes __get i __set per crear propietats, o propietats dinàmiques a stdClass continuaran funcionant sense canvis, només s'admetrà el treball implícit amb propietats inexistents per protegir el desenvolupador d'errors ocults. Per preservar el treball del codi antic, es proposa l'atribut “#[AllowDynamicProperties]”, que permet l'ús de propietats dinàmiques.
  • Proporciona la possibilitat de filtrar paràmetres sensibles a la sortida de traça de la pila en el moment d'un error. Es pot requerir tallar certa informació quan la informació sobre errors que es produeixen s'envia automàticament a serveis de tercers que fan un seguiment dels problemes i n'informen els desenvolupadors. Per exemple, podeu excloure paràmetres de la traça que inclouen noms d'usuari, contrasenyes i variables d'entorn. prova de funció( $foo, #[\SensitiveParameter] $contrasenya, $baz ) { throw new Exception('Error'); } test('foo', 'contrasenya', 'baz'); Error fatal: Excepció no detectada: Error a test.php:8 Traça de pila: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {principal} llançat a test.php en línia 8
  • S'ha obsolet la possibilitat de substituir valors variables en cadenes mitjançant expressions "${var}" i ${(var)}". S'ha mantingut el suport per a les substitucions "{$var}" i "$var" d'ús habitual. Per exemple: "Hola {$world}"; D'acord "Hola $world"; D'acord "Hola ${world}"; Obsolet: l'ús de ${} a les cadenes està obsolet
  • Les trucades parcialment compatibles que es poden cridar mitjançant "call_user_func($callable)" s'han obsolet, però no admeten la trucada en la forma "$callable()": "self::method" "parent::method" "static :: mètode" ["self", "mètode"] ["parent", "mètode"] ["estàtic", "mètode"] ["Foo", "Bar::mètode"] [nou Foo, "Bar::mètode" "]
  • S'ha implementat la conversió de minúscules i minúscules independent de la configuració regional. Funcions com strtolower() i strtoupper() ara sempre converteixen les majúscules i minúscules dels caràcters de l'interval ASCII, com quan s'estableix la configuració regional a "C".

Font: opennet.ru

Afegeix comentari