PHP Frameworks

Totgeglaubte leben laenger.  Angefangen als Scriptsprache irgendwann in den 90ern, mit der man fuer damalige Verhaeltnisse dynamische Webseiten erstellen konnte, hat sich PHP bis heute als im Hintergrund agierender Praesentator von Webseiten im Internet…

Posted by eumel8 on August 23, 2011 · 7 mins read

Totgeglaubte leben laenger.  Angefangen als Scriptsprache irgendwann in den 90ern, mit der man fuer damalige Verhaeltnisse dynamische Webseiten erstellen konnte, hat sich PHP bis heute als im Hintergrund agierender Praesentator von Webseiten im Internet gehalten.


Quelle: http://www.tiobe.com/index.php/paperinfo/tpci/PHP.html

Profis wuerden natuerlich niemals PHP produktiv einsetzen, aber in zahlreichen Content-Management-Systemen (CMS) oder in Webshops, Blogs werkelt PHP.

Neben solchen Gesamtkunstwerken stellt sich bei einem neuen Projekt immer zuerst die Frage: Wo anfangen. Meist ist es ja doch ein Webportal mit einer Datenbank, "die irgendwas macht". Wenn man jetzt nicht Funktion fuer Funktion selber schreiben will, draengen sich in letzter Zeit verstaerkt sogenannte Frameworks auf. Ein Framework ist ein Sammelsurium von Funktionen, auf die man (neben den sowieso schon vorhandenen Funktionen im php-core) in seiner Anwendung zugreifen kann. Eine zugrundeliegende Systemarchitektur im modernen Programmierstil ist MVC-Model View Controller:

Die Idee dieses Stil ist die strikte Trennung der Applikation in 3 Bereiche:

  1. View (Ansicht):  Praesentation der Applikation im Browser
  2. Controller (Steuerung): Verarbeitung der Usereingangen und Verarbeitung der Daten
  3. Model (Logik): Datenmodell und Datenvorhaltung

 

Diese 3 Bereiche findet man zum Beispiel auch in modernen Systemlandschaften wieder:

 

Model, View, Controller sind die Inhalte dreier Sicherheitsbereiche im Netzwerk, die durch Firewalls logisch und physikalisch abgetrennt sind. Die View (Ansicht) befindet sich im Frontend, meist die Demilitaerisierte Zone (DMZ), waehrend Datenverarbeitung (Controller) und Datenhaltung (Model) in weiter hinten gelagerten Bereichen stattfindet.

Die Arbeit mit Frameworks ist bei weitem nicht so einfach, wie es gemeinhin suggeriert wird. Beim "normalen" Programmieren schreibt man einfach drauf los. Und landet irgendwann im Chaos - spaetestens wenn man nach einiger Zeit Fehler suchen oder bestehene Funktionen erweitern muss. Frameworks arbeiten objektorientiert, ein Fakt der nicht nur Java vorbehalten ist. Dennoch lohnt es sich, mit Frameworks zu befassen, denn nach einer gewissen Einarbeitungszeit kann man tatsaechlich mit der Produktion seines Codes beginnen.

2 Frameworks moechte ich an dieser Stelle vorstellen:

Codeigniter (http://codeigniter.com/)

Auf Codeigniter bin ich durch Tinypug gekommen (http://code.google.com/p/tinypug/). Tinypug ist eine Software zum Erstellen von Community Portalen mit Foren, Votingtools etc. . Jeffrey McManus hat einfach Codeigniter zugrunde gelegt und darauf  Tinypug aufgebaut. Sein Blog befindet sich unter http://blog.jeffreymcmanus.com/

Die Installation von Codeigniter beginnt sehr einfach. Man brauch einen Apache-Webserver mit mod_php5. Wenn man das zip-File in der Webserver-Root entpackt, sollte man sofort auf Codeigniter zugreifen koennen. Im Verzeichnis user_guide findet man zum Beispiel die komplette Dokumentation.  Sucht man eine erste Anwendung, kann man parallel Tinypug herunterladen, muss in der Config vielleicht noch ein paar Pfade anpassen und die Verbindung zu seinem "Model", sprich: der Datenbank herstellen, und kann schon schauen, wie Codigniter funktioniert. Das URL-Routing wird durch .htaccess und mod_rewrite realisiert, sollte man in seiner Apache-Config also auch zugelassen bzw. aktiviert haben. In der Config wird auch der "Ur"-Controller definiert, der bei Programmstart, also wenn der User auf unserem Webserver zugreift, geladen wird. Der Controller verarbeitet diese Anfrage, holt vielleicht noch Daten aus der Datenbank und laedt eine View, um eine entsprechende Webseite darzustellen. Der View uebergibt er Daten in Variablen, seien es Strings oder Arrays. Zahlreiche Funktionen stehen in  Bibliotheken zur Verfuegung, die sofort genutzt werden koennen. Beispiel: Das Ueberpruefen der Eingabe eines Formulars auf Gueltigkeit und Plausibilitaet - ein oft genutzter Einsprungspunkt fuer Hacker und Spammer.

Codeigniter hat eine weit verbreitete englischsprachige Communit. Ein mit Codeigniter realisiertes Projekt ist http://www.ideenportal.biz/, sowie die Realtime Statistik eines Mailsystems

Yii (http://www.yiiframework.com)

Yii bezeichnet sich selbst als Framework fuer Web 2.0 Webentwicklung. Der Name der Software und dessen Erfinder Qiang Xue muten asiatisch an. Die Community ist zum einen englisch, stark russisch gepraegt, und es gibt einen deutschsprachigen Teil im Forum.  Genau wie Codeigniter muss man einen Apache-Webserver mit mod_php5 in der Vorhand haben und kann nach Herunterladen und Entpacken der Software in der Document-Root sofort mit einigen Demos loslegen. Im Verzeichnis requirements testen Yii sich selbst und ob es alle Komponenten vorfindet, die es sich so wuenscht. So gehoert zum Beispiel ein Datenbanktreiber in PHP mit dazu (sei es MySQL oder Postgres) oder die Grafikbibliothek GD. Es sind nicht alle Komponenten sofort dringend notwendig. Es kommt drauf an, was man mit Yii vorhat.

Im Tutorial ist nochmal ausfuehrlich die Funktion von Yii erlaeutert. Neben der kompletten API Beschreibung aller Komponenten und Begriffdefinition wie MVC findet man auch sowas wie "erste Schritte" und man wird dazu geleitet, wie man eine erste Anwendung erstellen kann. Sehr komfortable ist zum Beispiel die automatisierte Codegenerierung mit gii. Um gii in yii verwenden zu koennen, muss es in der main.php im config-Verzeichnis zum einen aktiviert und die Remote-IP von dem Rechner, mit dem man den Code im Browser generieren moechte, in die Liste der erlaubten Rechner eintragen. Wenn man dann ueber die Kommandozeile sein Projekt erstellt hat, brauch man bloss noch Yii mit einer vorhandenen Datenbank in der main.php zu verbinden und kann dann (browsergestuetzt) Model, View, Controller aequivalent zum Datenbankschema in Yii erstellen.

Web 2.0 ist natuerlich Ajax und jQuery. Beides ist in Yii schon eingebaut und wenn man in der Admin-View seines Projekts angekommen ist, kann man schon die ajax-gestuetzte Suchfunktion in seiner Datenbank benutzen oder auch sehr leicht die "Autovervollstaendigen"-Funktion benutzen, wie man sie in vielen Webdiensten heutzutage schon vorfindet. Wie ich meine, findet man mit Yii auch einen leichten Einstieg in die Welt des Ajax oder jQuery.  Schwierig wirds bloss, wenn man im nachhinein sein Datenmodel aendern moechte und sich ebend nicht an die Restriktionen im MVC gehalten hat. Wenn man aber dann zum Beispiel nur mit gii ein neues Model erstellt, lassen sich die Views sehr leich anpassen und die Controller haben sowieso automatisch eine Accessliste generiert, welche Art von User jetzt welche Funktion und damit welche View nutzen darf. So hat man automatisch eine Granulierung zwischen lesenden und schreibenden Zugriff. Mit Yii wurde http://media.eumel.de realisiert und ein internes Kundendatenbank-Projekt.

Fazit: Mit Frameworks arbeiten lohnt sich. Und PHP ist nicht tot.