02.12. PHP 5.3 Features in real life

Die Veröffentlichung von PHP 5.3 vor rund 2 Jahren brachte dem PHP-Entwickler sinnvolle Neuerungen und Verbesserungen. Dazu zählen in erster Linie Namespaces, Late static binding und Closures (anonyme Funktionen).
Viele Verbesserungen hat PHP 5.3 vor allem aber unter der Haube erfahren. Das neue /PHP/5.3 ersetzt libmysql mit der eigenen, nativen Implementierung mysqlnd und hat auch den Garbage Collector verbessert. 

Das sind nur einige wenige Dinge, die mit PHP 5.3 sinnvoll verbessert und erweitert wurden. Auch gibt es ein Feature, dem der OOP-Entwickler mit einer gewissen Hassliebe entgegen steht: Jump Labels, auch “goto” genannt. Die Verwendung von goto ist in der heutigen PHP-Community nicht gerade sehr beliebt. Die Ursache: Die klassische, objektorientierte Programmierung bringt gegenüber einer Strukturierung seiner Anwendung mittels goto wesentliche Vorteile, wie Sichtbarkeiten, Vererbung etc.

PHP 5.3 bringt insgesamt jedoch viele erfreuliche Neuigkeiten mit von denen sich einige bereits sehr bewährt haben und bei Neuentwicklungen oder Refactorings auf jeden Fall in Erwägung gezogen werden sollten.


Namespaces

Namespaces dienen dazu, verschiedene Funktionalitäten wie beispielsweise Klassen in so genannte Namensräume zu kapseln und diese somit zu gruppieren. Man stelle sich das anhand einer klassischen Verzeichnisstruktur vor. Seine Dateien (PHP-Klassen) legt man in verschiedenen Verzeichnissen (Namespaces) ab und kann diese später laden und einbinden.

Beispiel:

Mit dem Schlüsselwort use importiert man Namespaces in einen anderen um die enthaltenen Funktionen und Klassen nutzen zu können.

Doch was bringen Namespaces?
Der Vorteil in Namespaces ist vor allem die Flexibilität in der Verwendung (Alias) und der Wegfall von Namenskonflikten. Jede Datei sowie jede Klasse kann also den selben Namen haben, solange diese in verschiedenen Namespaces liegen. Die Verwendung von Namespaces verbessert die Lesbarkeit sowie die Organisation der eigenen Klassen, da diese analog zu Ordnerstrukturen definiert sind. Somit sind auch kürzere Namen für Klassen möglich, da die organisatorische Beschreibung bereits im Namespace erfolgt.


Late static binding

Mit der Einführung von Late static binding wird nun die Möglichkeit geboten, eine aufgerufene Klasse im Kontext statischer Vererbung zu referenzieren. Das hört sich auf zu Beginn erstmal kompliziert an, lässt sich aber folgendermaßen erklären:

Die Methode self::who() referenziert auf seine eigene Methode who(). Das Schlüsselwort self referenziert also nicht den Kontext bei statischer Vererbung. Es gibt somit keine Möglichkeit, auf die Methode who()der Klasse B zuzugreifen, ohne die Methode test() ebenfalls zu überschreiben.
Um diesen Umstand zu korrigieren, wurde mit PHP 5.3 Late static binding mit dem Schlüsselwort static eingeführt, welches den Kontext berücksichtigt.

Die Methode test() wird verändert:

 

Zur Erläuterung: selfbindet sich bereits beim interpretieren des Codes an die Klasse, static erst bei der Ausführung.
Die Verwendung von Late static binding hilft dabei, Quellcode zu sparen, da Funktionalität bereits in eine Basis-Implementierung (abstract class) geschrieben werden kann.

 


Abschließend

PHP 5.3 bringt auch “unter der Haube” viele Verbesserungen, Bugfixes und Performance improvements mit. Einige Bibliotheken wie phar (PHP Archive), fileinfo oder intl sind nun auch nativ mit dabei und müssen somit nicht mehr extern eingebunden werden.
Damit sei PHP 5.3 vor allem für neue Projekte sehr empfohlen.

Für neue Blogupdates anmelden:


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *