Die Alpha-Tests fĂŒr PHP 8.2 haben begonnen.

Die erste Alpha-Version des neuen Zweigs der Programmiersprache PHP 8.2 wurde vorgestellt. Die Veröffentlichung ist fĂŒr den 24. November geplant. Die wichtigsten Neuerungen, die bereits zum Testen verfĂŒgbar sind oder in PHP 8.2 umgesetzt werden sollen:

  • Es wurden separate Typen "false" und "null" hinzugefĂŒgt, die beispielsweise verwendet werden können, um von einer Funktion einen Fehlerabschlusshinweis oder einen leeren Wert zurĂŒckzugeben. Zuvor konnten "false" und "null" nur in Verbindung mit anderen Typen (z. B. "string|false") verwendet werden, nun können sie einzeln eingesetzt werden: function alwaysFalse(): false { return false; }
  • Es wurde die Möglichkeit hinzugefĂŒgt, eine Klasse als nur lesbar zu kennzeichnen. Eigenschaften in solchen Klassen können nur einmal festgelegt werden, danach sind sie nicht fĂŒr Änderungen verfĂŒgbar. Zuvor konnten nur einzelne Eigenschaften einer Klasse als schreibgeschĂŒtzt markiert werden, jetzt kann dieser Modus fĂŒr alle Eigenschaften der Klasse gleichzeitig aktiviert werden. Das Festlegen des Flags "readonly" auf der Klassenebene blockiert auch das dynamische HinzufĂŒgen von Eigenschaften zur Klasse. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* 
 */); $post->unknown = 'wrong'; // Fehler: Dynamische Eigenschaft Post::$unknown kann nicht erstellt werden.
  • Die Möglichkeit des dynamischen Erstellens von Eigenschaften in einer Klasse wurde als veraltet erklĂ€rt (wie "post->unknown" im obigen Beispiel). In PHP 9.0 wird der Zugriff auf Eigenschaften, die ursprĂŒnglich nicht in der Klasse definiert sind, zu einem Fehler fĂŒhren (ErrorException). Klassen, die die Methoden __get und __set fĂŒr die Erstellung von Eigenschaften bereitstellen, oder dynamische Eigenschaften in stdClass werden weiterhin ohne Änderungen funktionieren, die UnterstĂŒtzung fĂŒr die implizite Arbeit mit nicht existierenden Eigenschaften wird jedoch eingestellt, um den Entwickler vor verborgenen Fehlern zu schĂŒtzen. Um die FunktionalitĂ€t des alten Codes zu erhalten, wurde das Attribut "#[AllowDynamicProperties]" vorgeschlagen, das die Verwendung dynamischer Eigenschaften erlaubt.
  • Es wurde die Möglichkeit zur Filterung sensibler Parameter in den wĂ€hrend eines Fehlers ausgegebenen Stack-Trace-Daten bereitgestellt. Das Ausschneiden bestimmter Informationen kann notwendig sein, wenn Informationen zu aufgetretenen Fehlern automatisch an externe Dienste gesendet werden, die Probleme verfolgen und die Entwickler informieren. Zum Beispiel können Parameter, die Benutzernamen, Passwörter und Umgebungsvariablen enthalten, aus dem Trace ausgeschlossen werden. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception(‘Error’); } test(‘foo’, ‘password’, ‘baz’); Fatal error: Uncaught Exception: Error in test.php:8 Stack trace: #0 test.php(11): test(‘foo’, Object(SensitiveParameterValue), ‘baz’) #1 {main} thrown in test.php on line 8
  • Die Möglichkeit, Variablenwerte in Strings mittels der AusdrĂŒcke „${var}“ und „${(var)}“ einzufĂŒgen, wird als veraltet erklĂ€rt. Die UnterstĂŒtzung der gĂ€ngig verwendeten EinfĂŒgungen „{$var}“ und „$var“ bleibt erhalten. Zum Beispiel: „Hello {$world}“; OK „Hello $world“; OK „Hello ${world}“; Deprecated: Using ${} in strings is deprecated
  • Teilweise unterstĂŒtzte Aufrufbare Objekte (callable), die ĂŒber „call_user_func($callable)“ aufgerufen werden können, aber den Aufruf in der Form „$callable()“ nicht unterstĂŒtzen, werden als veraltet erklĂ€rt: „self::method“ „parent::method“ „static::method“ [„self“, „method“] [„parent“, „method“] [„static“, „method“] [„Foo“, „Bar::method“] [new Foo, „Bar::method“]
  • Eine lokal unabhĂ€ngige Groß- und Kleinschreibung von Zeichen wurde implementiert. Funktionen wie strtolower() und strtoupper() wandeln jetzt immer die Zeichen im ASCII-Bereich um, unabhĂ€ngig von der eingestellten Locale.

Quelle: opennet.ru

60GB SSD 8Gb DDR4