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).