PHP 5: Auf dem Weg zur „richtigen“ Programmiersprache? (Teil 3)
Veröffentlicht am: 22.12.2003 16:20:07

Ob bewusst oder unbewusst, so gut wie jeder der sich heutzutage im WWW bewegt, wird früher oder später mit PHP in Berührung kommen, denn die weit verbreitete Skriptsprache ist zu einem festen Bestandteil des Weballtags geworden. Nun ist die Beta 3 der beliebten Programmiersprache freigegeben worden, die vor allem Fehler behebt und nochmals Verbesserungen bei der Verarbeitung von XML bietet.

Der Siegeszug von PHP scheint schier unglaublich. Wer hätte gedacht dass sich aus dem früheren Ein-Mann-Projekt eine Programmiersprache entwickelt die mittlerweile bei fast 14 Millionen Domains zum Einsatz kommt? Wohl kaum jemand. Doch wieder einmal hat eine Open-Source-Lizenz einem Projekt zu großer Popularität verholfen und es so weit reifen lassen dass viele Unternehmen es bedenkenlos in geschäftskritischen Szenarien einsetzen. Eine Vielzahl von Usern weltweit wartet darum gespannt auf die Veröffentlichung von PHP5, eine Version welche die Fähigkeiten der beliebten Sprache nochmals deutlich zu verbessern verspricht.

PHP4 ist aus dem heutigen Weballtag kaum mehr wegzudenken und bildet gemeinsam mit drei anderen Open-Source-Lösungen das so genannte LAMP-System (Linux, Apache, MySQL, PHP), eine kostengünstige aber erprobte Serverlösung welche bei vielen Providern zu finden ist. Es wird geschätzt dass über 20% aller Domains heute PHP einsetzen.

Widmen wir uns nun der Zukunft von PHP, genauer gesagt der kommenden Version PHP5. Diese wird eine Fülle an neuen Features bieten auf die eine Vielzahl von Entwicklern rund um den Globus bereits gespannt wartet.

Doch zuerst möchte ich noch einige, beim einen oder anderen Leser eventuell vorhandene, Zweifel zerstreuen: das PHP-Team ist sich der weiten Verbreitung der Sprache bewusst, und legt aus ebendiesem Grund Wert auf weitestgehende Abwärtskompatibilität. So dürfte es ohne weiteres möglich sein PHP4 und PHP5 auf dem gleichen Rechner im Einsatz zu haben, auch wurde an einen Kompatibilitätsmodus welcher via der Datei php.ini aktiviert werden kann ("zend2.implicit_clone = on", der Name dieser Option kann sich aber noch ändern), gedacht. Sollten Ihre bisher im Einsatz befindlichen Skripte nicht am Limit des mit PHP4 gerade noch Machbaren liegen, stehen die Chance diese weiterverwenden zu können also ganz gut! Auch wissen die Entwickler um andere "Tugenden" von PHP (einfacher Einstieg, ideal zur schnellen Lösung von Problemen und für rapid prototyping, Fokussierung auf Webanwendungen) und versuchen diesen Prinzipien treu zu bleiben. Und auch wenn immer wieder von den Verbesserungen im objektorientierten Bereich die Rede ist, PHP als solches bleibt seinen prozeduralen Wurzeln durchaus treu. Veteranen sollten der Zukunft also eher erfreut den besorgt entgegenblicken können! :) Doch nun genug der langen Vorrede, stürzen wir uns ins Vergnügen.

MySQL – Nein, danke!

In nicht wenigen Fällen wird PHP wohl in Verbindung mit einer MySQL Datenbank eingesetzt. Darum wird der eine oder andere Leser jetzt sicher aufschrecken wenn er hört dass PHP5 vorerst ohne Bibliotheken zum Zugriff auf ebendiese ausgeliefert wird. Zum einen wollen die Entwickler keiner Datenbank den Vorzug geben, zusätzlich gab es einen Lizenzwechsel auf Seiten von MySQL (von LGPL zu GPL). Dadurch kann PHP welches eine BSD-ähnliche Lizenz verwendet, momentan nicht gegen libmysql 4.1 gelinkt werden. An einer Sonderlösung für Open-Source-Projekte wird seitens MySQL AB gearbeitet, die Entwickler von PHP wollten dadurch aber keineswegs ihre Roadmap gefährden. Natürlich kann aber weiterhin über Extensions (wie zum Beispiel MySQLi) auch auf MySQL 4 zugegriffen werden, der geneigte Leser sollte nur beachten dass er dafür beim Einsatz in einem Nicht-GPL-Projekt eine Lizenz benötigt. Mehr zu diesem Thema lässt sich bei Interesse leicht mit der Suchmaschine Ihrer Wahl herausfinden.

SQLite? - Ja, bitte!

All Jenen die den vorigen Absatz noch nicht ganz verdaut haben, möchte ich hier wieder ein wenig Mut zusprechen, kommt PHP5 doch mit einer eingebetteten Datenbankengine, namentlich SQLite. Diese kleine und extrem schnelle (ca. doppelt so schnell wie MySQL) Lösung ist natürlich nicht als Ersatz für "richtige" Datenbanksysteme gedacht, bietet Benutzern von PHP5 aber out-of-the-box einen Mechanismus der zur Speicherung von Benutzerdaten, Sessions oder Konfigurationsoptionen mehr als ausreicht, und lässt sich dabei analog zu anderen Datenbanken in PHP ansprechen, wobei es zusätzlich auch ein objektorientiertes API gibt. Doch das Beste kommt noch: da SQLite seine Datenbanken in Dateien auf der Festplatte oder im Hauptspeicher anlegt, profitieren auch Benutzer von Webspace ohne z.B. Datenbankunterstützung davon!

XML - eXtreM Leicht

Ein Großteil aller in PHP geschriebenen Applikationen erzeugt vermutlich in irgendeiner Weise (X)HTML. Da es sich dabei um ein Subset von XML handelt, sollte es nicht weiter verwundern wenn man von dieser Sprache auch einen vernünftigen Umgang mit Letzterem erwartet. Dies war bisher durch die Verwendung dreier Bibliotheken (Expat, libxml, Sablotron) nicht unbedingt der Fall. In PHP5 hingegen wird nur noch der GNOME XML Parser (libxml) verwendet und die DOM-Implementierung wurde gründlich überarbeitet. Dies sollte so gut wie alle Wünsche die ein Entwickler an eine XML-Implementierung mitbringt (SAX und DOM, validieren gegen DTD und XML Schema, XSLT, etc.) erfüllen. Zusätzlich gibt es mit "Simple XML" ein API welches die aus einer XML-Datei erzeugte Baumstruktur in die nativen Datentypen von PHP umwandelt. Dies kann in der Praxis zum Beispiel folgendermaßen aussehen:
user;
foreach ($users as $user) {
	echo "{$user->name} wohnt in {$user->town}";
}
?>
Einfacher lässt sich der Umgang mit XML-Dateien kaum noch gestalten. :)

Fehlerteufel

Jeder macht mal Fehler. Damit diese in einem Programm aber nicht zu heillosem Durcheinander führen benötigt man vernünftige Methoden zu deren Erkennung und Behandlung. Zu diesem Zweck bietet PHP5 nun Möglichkeiten wie man sie zum Beispiel von Java kennt, nämlich das Dreigespann throw, catch und try. Für all jene die mit diesem Konzept noch nicht vertraut sind folgt eine kurze aber hoffentlich hinreichend verständliche Erklärung: an bestimmten Stellen im Code veranlasst der Entwickler das Programm dazu eine so genannte "Exception" (Ausnahme) zu "werfen" (mittels throw). Dies könnte zum Beispiel der Fall sein wenn im Eingabefeld für die Mailadresse ungültige Zeichen gefunden werden. Später wird dann "versucht" (try) mit dieser Eingabe weiter zu arbeiten. Ist die eingegebene Adresse korrekt wird es dabei auch keinerlei Probleme geben, sollte sie aber falsche Zeichen enthalten wird die Abarbeitung abgebrochen und die Exception "geworfen". Diese wird in einem weiteren Codeteil "aufgefangen" (catch) der dann den User zu einer Neueingabe auffordert oder einfach mit einer Fehlermeldung quittiert. Soviel zur kurzen Einführung, ich hoffe verständlich geblieben zu sein.

Hat man dieses Konzept erst verinnerlicht, wird man schnell feststellen können dass es flexibel einsetzbar ist. So kann der Entwickler einfach festlegen wann er bestimmte Fehler abfangen möchte (mittels try-catch) und wann er diese getrost ignorieren kann. Auch kann er an unterschiedlichen Stellen des Programms auf dieselbe Exception (welche mittels throw "geworfen" wurde) auf unterschiedliche Art reagieren. Auf jeden Fall kann jetzt schon mit einiger Sicherheit gesagt werden dass dieser Mechanismus für die PHP-Community einen gewaltigen Schritt nach vorn bedeutet da er endlich einen standardisierten Weg zur Fehlerbehandlung bietet. Dies sollte die Verwendung von fremden Bibliotheken in eigenen Projekten erleichtern und über kurz oder lang (hoffentlich) die Qualität selbiger steigern.

Glaubenskrieg

Wie bei vielen anderen Dingen im IT-Alltag führt auch die Diskussion über Programmierparadigmen oft zu erbitterten Glaubenskriegen. Befolgt man aber die alte Weisheit "the right tool for the job" wären diese oft vermeidbar. Aus diesem Grund wollen wir kurz das prozedurale und das objektorientierte Paradigma vergleichen um der geneigten Leserschaft diese Entscheidung in Zukunft zu erleichtern.

PHP hat seine Entwicklung als "klassische" prozedurale Programmiersprache begonnen. Dies bedeutet dass ein Entwickler eine Reihe von Anweisungen schreibt welche vom Interpreter der Reihe nach (natürlich gibt es Kontrollstrukturen) abgearbeitet werden. Der Fokus der Entwicklung liegt dabei auf der Funktion, nicht unbedingt auf den Daten. Dieser Ansatz eignet sich besonders für einfache oder einmalige Lösungen, wie zum Beispiel kleine Webseiten oder Shellskripts, bei größeren Projekten stößt man aber leicht an die Grenzen dieses Konzepts, und auch bei der Wiederverwendbarkeit des Codes müssen oft Abstriche gemacht werden.

Im Gegensatz dazu liegt beim objektorientierten Paradigma das Hauptaugenmerk auf den Daten. Der Entwickler konzentriert sich darauf was als Eingabe zu erwarten und als Ausgabe zu produzieren ist. Dadurch wird die eigentliche Implementierung in kleine, einfach zu verwaltende Einheiten abstrahiert, die im Bedarfsfall durch eine alternative Variante ausgetauscht werden können. Dieser höchst modulare Ansatz für auch zu einer guten Wiederverwendbarkeit des Codes.

Durch die überwiegend prozedurale Anwendung von PHP kommt es auch dass Entwickler sehr oft das Rad neu erfinden müssen da es bisher zum Beispiel keinen "einheitlichen" Weg zur Benutzerauthentifizierung in ihren Skripten gab. Die vermehrte Verfügbarkeit objektorientierter Strukturen sollte die Wiederverwendbarkeit des Codes deutlich erhöhen und es kann eine Art Standardbibliothek aufgebaut werden auf die PHP-Entwickler zurückgreifen können.

Fazit

Was können wir also von PHP5 erwarten? Vermutlich dass es seine Vormachtstellung in der Webentwicklung weiter ausbauen wird. Die neue Datenbankengine, verbesserte XML-Unterstützung, ein standardisierter Mechanismus zur Fehlerbehandlung und das neue Objektmodell sollten dazu beitragen das Niveau der Sprache weiter zu verbessern und PHP für größere und komplexere Anwendungen tauglicher zu machen.

PHP

Michael Kohl




Gedruckt von WCM (http://www.wcm.at/contentteller.php/news_story/php_5_auf_dem_weg_zur_richtigen_programmiersprache_teil_3.html)