Les tests alpha de PHP 8.2 ont commencé

La première version alpha de la nouvelle branche du langage de programmation PHP 8.2 a été présentée. La sortie est prévue pour le 24 novembre. Les principales innovations déjà disponibles en test ou prévues pour être implémentées dans PHP 8.2 :

  • Des types distincts "false" et "null" ont été ajoutés, qui peuvent être utilisés, par exemple, pour renvoyer un signe d'achèvement avec une erreur ou une valeur vide par une fonction. Auparavant, "false" et "null" ne pouvaient être utilisés qu'en conjonction avec d'autres types (par exemple, "string|false"), mais maintenant ils peuvent être utilisés séparément : function alwaysFalse(): false { return false; }
  • Ajout de la possibilité de marquer une classe en lecture seule. Les propriétés de ces classes ne peuvent être définies qu'une seule fois, après quoi elles ne pourront plus être modifiées. Auparavant, les propriétés de classe individuelles pouvaient être marquées en lecture seule, mais vous pouvez désormais activer ce mode pour toutes les propriétés de classe à la fois. La spécification de l'indicateur "readonly" au niveau de la classe bloque également l'ajout dynamique de propriétés à la classe. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->inconnu = 'faux' ; // Erreur : impossible de créer la propriété dynamique Post :: $inconnu
  • La possibilité de créer dynamiquement des propriétés dans une classe est obsolète (comme "post->inconnu" dans l'exemple ci-dessus). En PHP 9.0, l'accès à des propriétés non définies à l'origine dans la classe entraînera une erreur (ErrorException). Les classes qui fournissent les méthodes __get et __set pour créer des propriétés, ou des propriétés dynamiques dans stdClass continueront à fonctionner sans modification, seul le travail implicite avec des propriétés inexistantes sera arrêté afin de protéger le développeur des erreurs cachées. Pour que l'ancien code fonctionne, l'attribut "#[AllowDynamicProperties]" est proposé, permettant l'utilisation de propriétés dynamiques.
  • Possibilité de filtrer les paramètres sensibles dans la sortie de trace de la pile au moment d'une erreur. Il peut être nécessaire de supprimer certaines informations lorsque des informations sur les erreurs qui se produisent sont automatiquement envoyées à des services tiers qui suivent les problèmes et en informent les développeurs. Par exemple, vous pouvez exclure de la trace des paramètres qui incluent des noms d'utilisateur, des mots de passe et des variables d'environnement. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Error'); } test('foo', 'password', 'baz'); Erreur fatale : Exception non interceptée : Erreur dans test.php:8 Stack trace : #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} lancé dans test.php à la ligne 8
  • La possibilité de substituer des valeurs de variables dans des chaînes à l'aide des expressions "${var}" et ${(var)}" est obsolète. La prise en charge des substitutions "{$var}" et "$var" couramment utilisées a été conservée. Par exemple : "Bonjour {$monde}" ; OK "Bonjour $monde" ; OK "Bonjour ${world}" ; Obsolète : l'utilisation de ${} dans les chaînes est obsolète
  • Appelables obsolètes partiellement pris en charge qui peuvent être appelés via "call_user_func($callable)" mais ne prennent pas en charge l'appel sous la forme "$callable()": "self::method" "parent::method" "static::method" ["self", "method"] ["parent", "method"] ["static", "method"] ["Foo", "Bar::method"] [new Foo, "Bar:: method"]
  • Implémentation de la conversion de cas indépendante des paramètres régionaux. Des fonctions comme strtolower() et strtoupper() convertissent désormais toujours la casse des caractères dans la plage ASCII, comme lors de la définition des paramètres régionaux sur "C".

Source: opennet.ru

Ajouter un commentaire