Bessere Eignung für große Projekte

PHP 5 mit Fokus auf Objektorientierung

26.07.2002
MÜNCHEN (ws) - Die bevorstehende Version 5 der populären Web-Sprache PHP bringt vor allem Neuerungen in puncto Objektorientierung. Eine bessere Integration mit Java und Microsofts .NET/COM soll die Scriptsprache als universelles Mittel zur Entwicklung von Web-Frontends etablieren und Unternehmen ermuntern, PHP auch für komplexere Aufgaben heranzuziehen.

Die Scriptsprache "PHP Hypertext Processor" (PHP) repräsentiert zweifellos eine weitere Erfolgsgeschichte für Open Source. Seitdem sie 1998 in der Version 3 die nötige Stabilität und technische Reife erlangte, fand sie rasante Verbreitung. Mittlerweile hat die Technik für die Erzeugung dynamischer Web-Inhalte proprietäre Konkurrenten wie Microsofts "Active Server Pages" (ASP) oder Macromedias "Cold Fusion" überflügelt.

Laut Netcraft (http://www.netcraft.com/Survey) existieren bereits über fünf Millionen Sites, auf denen PHP installiert ist. Diese hohe Zahl verdankt sich vor allem der Tatsache, dass die meisten Linux-Distributionen den Apache-Server inklusive PHP-Modul einrichten. Die Entwickler-Site PHP.net (http://www.php.net) nimmt aber an, dass davon rund drei Millionen aktiv genutzt werden. Die Zahl der weltweiten PHP-Entwickler wird auf etwa 400000 geschätzt.

Gefahr eines OO-Stückwerks droht

Die Version 4 (derzeit aktuell 4.2.1) basiert auf einem neu geschriebenen Interpreter namens "Zend Engine". Sie trägt den Namen der Firma Zend (http://www.zend.com), die von den beiden federführenden Entwicklern Zeev Suraski und Andi Gutmans gegründet wurde. Die bevorstehende Version 5 von PHP soll auf der Zend Engine 2 beruhen, die kürzlich in einer Alpha-Variante freigegeben wurde.

Dort setzt das PHP-Team die in der Version 3 begonnene Erweiterung der ursprünglich prozeduralen Sprache um objektorientierte Features fort (siehe Kasten "Neu in PHP 5"). Wie der Open-Source-Konkurrent Perl zeigt, ist dieses Verfahren aber nicht ganz unproblematisch. Ein derartiges Nachrüsten kann OO-Stückwerk hervorbringen, das von der bestehenden Anwenderschaft zugunsten prozeduraler Programmierung weitgehend ignoriert wird. Gerade die mit Perl 5 eingeführte Objektorientierung wurde häufig kritisiert und erfährt in der Version 6 erhebliche Änderungen. Auch die Neuerungen von PHP 5 haben primär die Aufgabe, OO-Mängel der aktuellen Version zu beseitigen. Die damit einhergehenden Änderungen der Sprachsyntax sollen aber auf bestehende Scripts kaum Auswirkungen haben. Für die Ausführung von Legacy-Code bietet die neue Engine ansonsten einen Kompatibilitätsmodus.

Ergänzung zu Java und .NET

Auch wenn die neuen Features den Eindruck erwecken, dass PHP im Vergleich zu Java erst allmählich erwachsen wird, so lassen sich an die Scriptsprache nicht die gleichen Maßstäbe anlegen wie etwa an die Sun-Technologie. Während Java laut Erfinder James Gosling von Anfang an so ausgelegt wurde, dass es sich besonders für die Entwicklung sehr großer Projekte eigne, beruht der große Erfolg von PHP auf seiner Einfachheit. Der enorme Fundus an Zusatzmodulen, die gute Web-Integration, der einfache Zugriff auf Datenbanken sowie die Möglichkeit zur prozeduralen Programmierung verschafften ihr schnell die Gunst von Entwicklern dynamischer Web-Inhalte. Sie repräsentieren weiterhin die größte Nutzergruppe, und sie wollen diese Vorzüge der Sprache auch zukünftig nicht missen.

Die neuen Features hingegen sollen besonders Unternehmen ermuntern, PHP auch für komplexere Aufgaben heranzuziehen. Nachdem sich die Plattformauswahl für die Programmierung von Geschäftslogik immer mehr auf Java und .NET einengt, sieht Zeev Suraski für PHP eine ergänzende Rolle. Die Sprache soll aufgrund ihrer Vorzüge für die Entwicklung von Web-Frontends herangezogen werden, aus denen Funktionen auf Applikations-Servern aufgerufen werden. Besonders die standardmäßige Nutzung von Objektreferenzen in PHP 5 sowie die Angleichung anderer OO-Features vereinfachen die Anbindung an die beiden Systeme.

Im Enterprise-Einsatz sehen die beiden Hauptentwickler der Zend-Engine die besten Geschäftsmöglichkeiten für ihre Company. Sie verfolgen das für Open Source recht typische Business-Modell, ergänzende kommerzielle Produkte für freie Software anzubieten. Im Fall von Zend Technologies besteht diese in der Entwicklungsumgebung "Studio", dem Deployment-Tool "Encoder" sowie dem Script-Cache "Accelerator".

Die traditionelle PHP-Zielgruppe der Web-Entwickler zeigt sich allerdings gegenüber der Nutzung einer integrierten Entwicklungsumgebung (IDE) weitgehend resistent, das Verbergen von Quellcode vor fremden Blicken mit Hilfe des Encoders ist ihr selten ein Anliegen. Neben der Enterprise-Kundschaft peilt Zend daher auch Kooperationen mit Herstellern von Autorenwerkzeugen an. So nahm Adobe für "Golive" Technologie der israelischen Firma in Lizenz.

Konkurrenz zu ASP.NET und Java Server Pages

In der Arbeitsteilung mit Java und .NET/COM muss PHP indes mit den entsprechenden Technologien der beiden Plattformen konkurrieren. Bei Microsoft handelt es sich dabei um ASP.NET, Sun sieht für die Erzeugung dynamischer Web-Inhalte vornehmlich Java Server Pages (JSPs) vor. Gerade Letztere gewinnen für den unternehmensinterne Einsatz zunehmend an Attraktivität, weil Hersteller wie IBM oder Oracle Funktionen ihrer Server-Produkte für JSP-Entwickler über Tag Libraries leicht zugänglich machen. Nicht zuletzt sind es Open-Source-Projekte wie Apaches "Jakarta" (http://jakarta.apache.org), die mit Frameworks wie "Struts" oder eigenen Taglibs die Nutzung von JSPs vereinfachen.

Neu in PHP 5

Zu den Neuerungen der Version 5 gehören neben besserer Abstimmung auf den Web-Server "Apache 2" vor allem die Erweiterung und Modifizierung objektorientierter Features. Als wesentliche Änderung gilt insbesondere, dass PHP Objekte nicht mehr als Kopie an Funktionen übergibt, sondern wie Java intern nur mehr mit Referenzen arbeitet. Dies bringt nicht nur Geschwindigkeitsvorteile, sondern vereinfacht für den Programmierer den Zugriff auf Attribute von Objekten, die von Methoden zurückgegeben werden.

Zu den sichtbarsten Änderungen für Anwender gehört zudem, dass die Namen von Konstruktoren zukünftig nicht mehr identisch mit jenem ihrer Klasse sein sollen, sondern generell die Bezeichnung "__construct()" tragen. Damit möchte das PHP-Team den Aufruf von Konstruktoren der Basisklasse vereinfachen, weil der Einheitsname von Änderungen in der Objekthierarchie nicht betroffen wäre. Hinzu kommt eine Standardmethode zum Duplizieren von Objekten namens "__clone()".

Ein Defizit in PHPs Objektorientierung stellten bisher die ungenügenden Zugriffsbeschränkungen auf Felder von Objekten dar. Diese haben in der Version 4 prinzipiell den Status öffentlich, was dem Bedürfnis nach Kapselung von Objekten zuwiderläuft. PHP 5 führt nun das Schlüsselwort "private" ein.

Das bevorstehende Update holt bei der Objektorientierung einiges von dem nach, was in Sprachen wie Java und Ablegern wie C# von Anfang an üblich war. Mit Destruktoren ("delete()") führt PHP indes ein zusätzliches, wenn auch zweifelhaftes Feature ein. Eine solche Methode erlaubt das explizite Zerstören eines Objekts, auch wenn noch Referenzen darauf verweisen.

Auch mit einer weiteren Neuerung, der Behandlung von geprüften Ausnahmen, zieht PHP gegenüber anderen Sprachen gleich. Mittlerweile kennt etwa auch Visual Basic in seiner .NET-Ausführung dieses Feature. Eine detaillierte Übersicht über Änderungen in PHP 5 findet sich unter http://www.php.net/ZEND_CHANGES.txt.