Der Alphatest von PHP 8.2 hat begonnen

Das erste Alpha-Release des neuen Zweigs der Programmiersprache PHP 8.2 wurde vorgestellt. Die Veröffentlichung ist für den 24. November geplant. Die wichtigsten Neuerungen, die in PHP 8.2 bereits zum Testen verfügbar oder zur Implementierung geplant sind:

  • Es wurden separate Typen „false“ und „null“ hinzugefügt, die beispielsweise verwendet werden können, um von einer Funktion ein Abschlusszeichen bei einem Fehler oder einen leeren Wert zurückzugeben. Bisher konnten „false“ und „null“ nur in Verbindung mit anderen Typen verwendet werden (z. B. „string|false“), jetzt können sie jedoch separat verwendet werden: function AlwaysFalse(): false { return false; }
  • Es wurde die Möglichkeit hinzugefügt, eine Klasse als schreibgeschützt zu markieren. Eigenschaften in solchen Klassen können nur einmal festgelegt werden. Danach können sie nicht mehr geändert werden. Früher konnten einzelne Klasseneigenschaften als schreibgeschützt markiert werden, jetzt können Sie diesen Modus für alle Klasseneigenschaften gleichzeitig aktivieren. Durch die Angabe des „readonly“-Flags auf Klassenebene wird auch das dynamische Hinzufügen von Eigenschaften zur Klasse blockiert. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = 'falsch'; // Fehler: Dynamische Eigenschaft Post::$unknown kann nicht erstellt werden
  • Die Möglichkeit, Eigenschaften in einer Klasse dynamisch zu erstellen, ist veraltet (wie „post->unknown“ im obigen Beispiel). In PHP 9.0 führt der Zugriff auf Eigenschaften, die ursprünglich nicht in der Klasse definiert waren, zu einem Fehler (ErrorException). Klassen, die die Methoden __get und __set zum Erstellen von Eigenschaften oder dynamische Eigenschaften in stdClass bereitstellen, funktionieren unverändert weiter. Lediglich die implizite Arbeit mit nicht vorhandenen Eigenschaften wird gestoppt, um den Entwickler vor versteckten Fehlern zu schützen. Damit der alte Code weiterhin funktioniert, wird das Attribut „#[AllowDynamicProperties]“ vorgeschlagen, das die Verwendung dynamischer Eigenschaften ermöglicht.
  • Bietet die Möglichkeit, vertrauliche Einstellungen in der Stack-Trace-Ausgabe zum Zeitpunkt eines Fehlers zu filtern. Das Ausschneiden bestimmter Informationen kann erforderlich sein, wenn Informationen über aufgetretene Fehler automatisch an Dienste von Drittanbietern gesendet werden, die Probleme verfolgen und Entwickler darüber informieren. Sie können beispielsweise Parameter aus der Ablaufverfolgung ausschließen, zu denen Benutzernamen, Kennwörter und Umgebungsvariablen gehören. Funktionstest( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Error'); } test('foo', 'password', 'baz'); Schwerwiegender Fehler: Nicht erfasste Ausnahme: Fehler in test.php:8 Stack-Trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} in test.php geworfen online 8
  • Die Möglichkeit, Variablenwerte mithilfe der Ausdrücke „${var}“ und ${(var)}“ in Zeichenfolgen zu ersetzen, ist veraltet. Die Unterstützung für häufig verwendete Ersetzungen „{$var}“ und „$var“ wurde beibehalten. Zum Beispiel: „Hallo {$world}“; OK „Hallo $world“; OK „Hallo ${world}“; Veraltet: Die Verwendung von ${} in Strings ist veraltet
  • Teilweise unterstützte Callables, die über „call_user_func($callable)“ aufgerufen werden können, sind veraltet, unterstützen jedoch keinen Aufruf in der Form „$callable()“: „self::method“ „parent::method“ „static :: method" ["self", "method"] ["parent", "method"] ["static", "method"] ["Foo", "Bar::method"] [new Foo, "Bar: :method "]
  • Lokalisierungsunabhängige Groß-/Kleinschreibung implementiert. Funktionen wie strtolower() und strtoupper() konvertieren jetzt immer die Groß-/Kleinschreibung von Zeichen im ASCII-Bereich, wie beim Festlegen des Gebietsschemas auf „C“.

Source: opennet.ru

Kommentar hinzufügen