Global reservierte Wörter sind nun innerhalb von Klassen, Schnittstellen und Traits als Namen für Eigenschaften, Konstanten und Methoden erlaubt. Dadurch werden Probleme mit der Abwärtskompatibilität verringert, wenn neue Schlüsselwörter eingeführt werden, und Einschränkungen bei der Namensgebung für APIs vermieden.
Dies ist besonders nützlich, um interne DSLs mit "sprechenden" Schnittstellen (Fluent Interfaces) zu erstellen:
<?php
// 'new', 'private' und 'for' waren bisher nicht nutzbar.
Project::new('Project Name')->private()->for('purpose here')->with('username here');
?>
Die einzige Einschränkung dabei ist, dass das Schlüsselwort class
immer noch nicht als Name für eine Konstante verwendet werden kann, da es sonst zu einem Konflikt mit der Syntax zur Auflösung von Klassennamen (ClassName::class
) kommen würde.
Bisher wurde eine Warnung ausgegeben, wenn die INI-Einstellung date.timezone
nicht vor der Verwendung von datums- oder zeitbasierten Funktionen gesetzt wurde. Nun wurde diese Warnung entfernt (wobei die Standardeinstellung für date.timezone
immer noch UTC ist).