PHP wird erwachsen
Artikel erschienen in Swiss IT Magazine 2003/20
Seit Ende Juni steht die erste Betaversion von PHP 5 zum Download unter www.php. net/downloads.php bereit. Neben den Quellcodes sind auch die Windows-Binaries verfügbar, so dass sich jeder interessierte User die neue Version schon ansehen kann. PHP 5 bringt zahlreiche Neuerungen, die die Arbeit für PHP-Entwickler revolutionieren werden.
Die grössten Änderungen findet man in der Unterstützung der objektorientierten Programmierung (OOP), die in Version 4 erst halbherzig implementiert war. So gibt es nun endlich die Möglichkeit, Eigenschaften und Methoden einer Klasse auch mit Sichtbarkeiten wie "public", "private" und "protected" zu versehen. Damit lässt sich das unkontrollierte Zugreifen auf private Variablen innerhalb einer Klasse wirksam unterbinden, was im Sinne des "Information Hiding" der OOP sehr sinnvoll ist.
Zwei neue Methoden, __get($name) und __set($name, $wert), dienen dazu, den Zugriff auf Eigenschaften der Klasse abzufangen, die in dieser nicht existieren. Das kann bei der Fehlerbehandlung sehr hilfreich sein.
Auch gibt es nun einen speziellen Konstruktor für Klassen. In PHP 4 wurde dafür noch eine Methode deklariert, die den gleichen Namen wie die Klasse hatte; die Beta von PHP 5 unterstützt diese Deklaration des Konstruktors allerdings immer noch, die Rückwärtskompatibilität ist damit gewährleistet. Neu kann für den Konstruktor aber auch der reservierte Funktionsname __construct verwendet werden. Auch der bisher schmerzlich vermisste Destruktor lässt sich nun mit dem reservierten Namen __destruct erzeugen. Er wird immer dann aufgerufen, wenn das Objekt aus dem Speicher entfernt wird, und eignet sich daher ideal für eventuell notwendige Aufräumarbeiten.
Auch statische Eigenschaften und Methoden lassen sich nun nutzen. Das bedeutet, dass man bestimmte Eigenschaften und Methoden einer Klasse auch dann einsetzen kann, wenn noch keine Instanz der Klasse erzeugt wurde.
Weiterhin ist mit PHP 5 nun eine mehrfache Vererbung über Interfaces möglich; das funktioniert ähnlich wie etwa in Java. Wie diese wichtigen Neuerungen eingesetzt werden, verdeutlicht unser Beispiel im Codekasten weiter unten.
PHP 5 ist auch weiterhin keine streng typisierte Sprache, jedoch ist die Angabe von Klassen-Typen in der Parameterliste bei der Deklaration von Funktionen und Methoden möglich. So kann schon beim Kompilieren des Codes festgestellt werden, ob übergebene Parameter vom richtigen Typ sind, zumindest solange es sich um Instanzen von Klassen handelt.
Auch eigene Namespaces sollten in PHP 5 möglich sein, so dass Namenskonflikte bei der Verwendung von unterschiedlichen Klassenbibliotheken vermeidbar werden. Inzwischen haben die Entwickler jedoch bekanntgegeben, dass sie mit der Implementation in die vorliegende Version noch warten werden, da die Namespaces die Performance zu stark beeinträchtigen würden.
Anweisungen können nun in einem eigenen Try-catch-Block ausgeführt werden. Tritt bei der Ausführung ein Fehler in Form einer Exception auf, so kann dieser im Catch-Block abgefangen und behandelt werden.
Leider müssen Exceptions im Script selbst erzeugt werden. Typische Fehler wie Division durch Null oder der Zugriff auf Private-Eigenschaften in einer Klasse werden weiterhin mit einer ausgegebenen Warnung beziehungsweise einem "Fatal Error" geahndet. Diesbezüglich ist das Konzept der Exceptions noch nicht ganz zu Ende gedacht, und es ist zu hoffen, dass dieses Verhalten im Final-Release ausgemerzt wird.
Im Script können auch eigene Exception-Klassen deklariert werden, die von der Basisklasse Exception abgeleitet sind; so sind dann auch mehrere Catch-Blöcke für unterschiedliche Exception-Klassen möglich.
Wer seinen Webspace bisher nur mit PHP, aber nicht mit MySQL gebucht hat, wird sich über diese Neuerung freuen: PHP 5 hat den Datenbank-Support schon eingebaut. Die Datenbank-Engine nennt sich SQLite und wird ähnlich leistungsfähig und schnell wie MySQL sein. Lediglich einige seltener benutzte SQL-Befehle wie "ALTER TABLE" werden nicht unterstützt.
Der Support zur Verarbeitung von XML wurde in der neuen Version ebenfalls stark erweitert. War in PHP 4 lediglich ein SAX-Parser verfügbar, unterstützt PHP 5 nun den Gnome-XML-Parser, der auch mit dem Document Object Model (DOM) umgehen kann.
Insgesamt verspricht die neue Version positive Effekte auf die Entwicklung klarer und strukturierter Programme. Gerade mit den neuen OOP-Erweiterungen entwickelt sich PHP von der reinen Scriptsprache immer mehr zur professionellen Programmiersprache, die den Vergleich mit Java und C++ nicht mehr zu scheuen braucht.