Am 22. Juni 2017 erschien die PHP-Version 7.2.0. Alpha 2. Wir werfen aus diesem Anlass einen Blick zurück auf die Entwicklungsgeschichte der flexiblen Programmiersprache seit 1995. Die Veränderungen, die mit der Version 7.2 kommen, sind nicht einschneidend; anders war dies bei der Version 5.3.
Eine große Veränderung von PHP fand zwischen den Versionen 5 und 5.3 statt. Die objektorientierte Programmierung erhielt endlich Interfaces, Vererbung und Sichtbarkeits-Modifikatoren. Pass by reference wurde für Objekte zum Standard und Pointer-Konstrukte aus PHP 4 verschwanden.
Während PHP 5.4, 5.5 und 5.6 den Entwicklern hauptsächlich neue Funktionen und Bugfixes brachten, stellte sich die nächste größere Veränderung erst mit PHP 7 ein. Der Zeichensatz UTF-8 wird Standard und von den Kernfunktionen unterstützt. Viele Konvertierungen und Sonderregelungen sind damit nicht mehr nötig – insbesondere für mehrsprachige Webanwendungen.
Namespaces sind erst in PHP 7 häufiger genutzt worden, sodass umfangreiche Webanwendungen und Frameworks strukturierter und übersichtlicher arbeiten können.
Traits (Erweiterungen) für Klassen gibt es bereits seit PHP 5.4. Sie tauchten aber bisher nur selten in Frameworks und Anwendungen auf. Sie ermöglichen, die Beschränkung der einfachen Vererbung zu umgehen.
Mit Closures oder anonymen Funktionen bot PHP ein Feature, das durch Javascript schon sehr verbreitet war. Funktionen können als Parameter definiert und an andere Funktionen weitergereicht werden.
Verglichen damit sind Interfaces nichts Besonderes. Doch machen diese eine Anwendung übersichtlich und strukturiert.
PHP 7.2 setzt den eingeschlagenen Weg fort. Es zeichnen sich keine größeren Veränderungen ab. Der Wegfall der Erweiterung mcrypt wird voraussichtlich zu Kompatibilitätsproblemen bei älteren Webanwendungen führen.
Neben dem neuen Datenbankadapter erlaubt auch die mysqli-Schnittstelle eine Anbindung der Datenbank über Objekte und Klassen. Auch wenn prepared-Statements mittlerweile Standard sein sollten, tauchen immer wieder Anwendungen auf, die Eingaben ungesichert verarbeiten oder inzwischen veraltete mysql_ Funktionen nutzen.
PHP 6 gibt es nicht. Diese Version wurde übersprungen, da es sich nur um ein Experiment mit UTF-8 handelte.
Obwohl der Markt an PHP-Frameworks schon lange gefüllt ist, tauchen doch immer wieder neue Bibliotheken auf, lösen alte ab oder zeigen einen neuen Ansatz für bekannte Herausforderungen und Probleme.
Inzwischen ist die einzelne Klasse und Funktion unwichtiger geworden. Design-Patterns und Klassenkonstrukte wie Depency-Injection, Template-Engines, Objektmanager, Modulverwalter und MVC sind nun die Merkmale, die eine gute PHP-Anwendung herausstellen.