PHP 5: Im Bann von OOP

PHP 5: Im Bann von OOP

9. September 2004 - Die neue Major-Version von PHP kommt mit einem überarbeiteten Objektmodell sowie einem komplett neu entworfenen XML-Support.
Artikel erschienen in IT Magazine 2004/16

Seit Anfang August steht die erste Version von PHP 5 zum Download bereit und hält eine Menge neuer Funktionen und Konzepte bereit, die den Programmiereralltag noch weiter vereinfachen sollen. In den vier Jahren seit der Veröffentlichung des Vorgängers hat man sich vor allem um ein runderneuertes Objektmodell sowie zahlreiche neue Extensions gekümmert, welche nun die Basis für die nächsten Jahre Programmierarbeit darstellen. Dabei wurde aber auch darauf geachtet, nicht den Kontakt zur Vorversion zu verlieren und für einen reibungslosen Übergang zu sorgen, was dazu führt, dass die meisten PHP-4-Applikationen auch noch mit der neuen Version arbeiten.


Vom Kopf auf die Füsse

Die wohl auffälligste Änderung, mindestens für die Fans von OOP, ist das komplett überarbeitete Objektmodell im Rahmen der Zend Engine 2, das nun quasi vom Kopf auf die Füsse gestellt wurde.
In den Zeiten von PHP 3.0 und PHP 4.0 waren PHP-Objekte im Vergleich zu Objekten in «richtigen» objektorientierten Sprachen ein eher wunderliches Gebilde. Man kann ihre Stellung am besten mit Beigemüse für assoziative Arrays vergleichen, die einen Container für Properties darstellten. Die Grundlage für Objekte stellen aber Klassen dar, die, wie man vielleicht schon aus eigener Erfahrung weiss, aus Properties (Eigenschaften) und Methoden (Funktionen) bestehen. Eine derartige Klasse wird mit dem Operator new initiiert und, mit extends erweitert (Vererbung/Inheritance), ohne die Klasse von Grund auf neu schreiben oder kopieren zu müssen. Und es ist möglich, auf Methoden sowie Properties von innerhalb als auch von ausserhalb des Objekt-Kontexts zuzugreifen. Dies war zwar alles möglich, doch brachte dieses Modell, dem ein assoziativer Array nicht gerecht werden kann, eine Menge von Limitierungen und Problemen mit sich. Dies zeigte sich je länger je mehr, vor allem, da der objektorientierte Ansatz bei den PHP-Programmierern unerwartet beliebt wurde.
Das grösste Problem war dabei die Tatsache, dass in PHP nicht nur die normalen Variablen 'by value' von Funktion zu Funktion durchgereicht wurden, sondern auch die Objekte. Das sorgte dafür, dass diese bei jeder Weitergabe dupliziert wurden. Dies führte nicht nur zu einigen merkwürdigen Bugs, die sich nur schwer finden liessen, wenn man um das Problem nicht wusste, sondern vergeudete auch noch kostbare Ressourcen (siehe Listing 1).





Dies wurde nun behoben, indem PHP intern alle Objekte mit einer Nummer bezeichnet und diese nun in einer Liste führt. Wird das Beispiel von oben mit PHP 5 ausgeführt, wird bei der Zuweisung $math2 = $math1; nicht mehr das komplette Objekt weitergegeben, sondern nur die Zahl, welche das Objekt bezeichnet. Und alles funktioniert wie erwartet (siehe Listing 2).





Bei der Überarbeitung des Objektmodells wurde auch der Funktionsumfang der PHP-Objekte um Möglichkeiten erweitert, die man schon aus anderen objektorientierten Sprachen kennt. So findet man unter anderem eine Zugriffskontrolle über die Schlüsselwörter public/protected/private, statische Methoden, Destruktoren, magische Methoden (__call(), __get(), __set()…), Type Hinting, abstrakte Klassen, Interfaces sowie finale Klassen.



Listing 1: Objekt-Übergabe in PHP 4, Listing 2: Objekt-Übergabe in PHP 5



Listing 3: Ausnahmen für mysqli

 
Seite 1 von 2

Neuen Kommentar erfassen

Anti-Spam-Frage Was für Schuhe trug der gestiefelte Kater?
Antwort
Name
E-Mail
GOLD SPONSOREN
SPONSOREN & PARTNER