PHP ist Wissenschaft

Objektorientierte Programmierung nicht nur mit PHP

Vorwort

Wer sind eigentlich PHP Programmierer und warum machen Sie diese Arbeit und widmen sich nicht einem mehr angesehenen Programmiersprache?

PHP Entwickler sind kreative Menschen. Da PHP so eine einfache Programmiersprache ist, sind viele erfolgreiche Webprodukte entstanden, ohne dass der Programmierer tiefere Kenntnisse von Programmieren haben muss. All die nötige Info kann man im Internet finden und das ganze dann zusammenkleben. Sie sind nicht nur kreativ, aber auch erfolgreich und selbstständig. Welcher anderer Techniker kann damit angeben, dass sein Produkt von tausenden von Menschen benutzt wird und dabei hat er dieses Produkt ganz alleine zu hause in der Freizeit programmiert?

Das Problem in den PHP Prorammen ist einfach – unsere Programme sind erfolgreich. Die Menschen brauchen unsere Programme oder sind sogar süchtig nach ihnen. Sobald unsere Webseite, Browser Spiel, Facebook Anwendung oder Shop anfängt nutzen zu bringen, beginnt ein Problem – wir fangen an dieses Produkt um weiter Funktionen (sog. Features) zu erweitern und hier fängt in der Regel Spagetti Code an. Nein, ich spreche nicht von Vermischen von SQL, HTML und PHP zusammen in einer Datei, ich hoffe sogar, dass die meiste der Leser irgendeinen Framework benutzt. Wenn jemand keine Ahnung hat, was ein Framework ist, am besten gleich mit dem Studium anfangen. Hello World muss jeder in einigen wenigen Stunden schaffen und die investierte Zeit macht sich bezahlt.

Aber auch große, qualitative Frameworks wie Symfony oder ZendFramework sind nicht der Schlüssel zum sauberen Code. Das Framework definiert uns eine Schicht für den Datenzugriff (Model), eine elegante Form URL’s auf den zu ausführenden Code zu mappen (Controller) und ein Mapping von Daten auf die Anzeige im Browser (View). Wenn man sich ein großes Projekt anschaut, steht sehr viel Geschäftslogik im Controller und die Models wachsen unkontrolliert. Eben diese Sachen machen den Code unübersichtlich.

Der Code, der schon einmal im Controller steht ist nicht wiederbenutzbar und wenn er wiederbenutzbar gemacht werden soll, benutzt man copypaste, oder im besseren Fall endet er in einer nichtssagenden Helper Klasse. Es gibt noch die Ansicht, dass ein wiederverwendbarer Code in den Model gehört, was andere Probleme mitbringt. Wenn unserer Model (resp. Datenobjekt) unkontrolliert wächst, beinhaltet unser Model sehr viel Code, der dort nichts zu tun hat. Model View Controller ist nur die Spitze des Eisbergs in der Entwicklung von wartbarer Software mit PHP. In der Ersten Reihe ist es nötig, sich klar zu werden, dass in der Welt von PHP, das Wort Model mit dem Wort Datenmodell oft übersetzt wird. Es gibt eine Reihe von Vorgehensweisen, die das Wort Model anders definieren und wenn sich dann zwei Entwickler (z.B. ein PHP und ein Java Entwickler) über Models sprechen, entsteht ein klassischer PHP- Spagetti Code.

Die Softwareentwicklung ist ein sehr breites Gebiet und wenn wir uns danach sehnen, nicht in das Legacy Hell zu gelangen (Wer dort schon war, weiß, dass es dort wirklich heiß ist). Bzw. Aus dem Legacy hell zu entkommen, muss man irgendwo anfangen. In erster Reihe muss man das richtige IDE benutzen (die Zeit von Texteditoren ist endgültig um!) – ich persönlich bin ein Befürworter von PHPStorm. Damit wir die IDE sinnvoll ausnutzen können ist GIT (oder ein anderes Versionsverwaltungstool) ein muss – es gibt nichts besseres als den Code regelmäßig auf die Veränderungen zu kontrollieren und regelmäßig zu comitten. Die nächste Sache, an die man sich halten muss ist richtige Objektmodellierung – eine richtige Benutzung vom Konstruktor, eine richtige Ausnützung der Sichtbarkeit der Methoden, Definition von Eingabetypen und Ausgabetypen – und das wieder aus dem Grund, damit für uns die IDE seine Arbeit richtig machen kann – Code Completition und andere hilfreiche Funktionen des IDE.

Genau, es geht darum, PHP wie Java zu schreiben. Es befasst sich jede Menge von Publikationen damit, wie man richtig riesige Programme mit Java richtig schreibt. Diese Publikationen definieren das Wörterbuch der Objektorientierten Programmierung und somit ein Grundbaustein für die Beschreibung eines konkreten programmiertechnischen Problems. Nur wenige interessieren sich jedoch damit, wie man große Programme mit PHP schreibt. Wir können nicht vergessen, dass PHP ursprünglich eine Skriptsprache war und somit auch die meisten Publikationen über PHP sich vor allen nur mit dem einfachen „skripten“ zur Erstellung Webseiten befassen. Falls Ihr PHP-Programm jedoch schon so gewachsen ist, oder Sie planen ein großes Projekt mittels PHP zu schreiben, er im Grenzfall sogar nichts mit Webseiten zu tun hat – somit können Sie jegliches Nutzen von einem MVC Framework komplett vergessen, ist es nötig die Inspiration in Java zu suchen. Es hat auch andere Vorteile – Sie lernen wie Java Entwickler zu denken und somit öffnet sich Ihnen die Tür z.B. in die Welt der mobilen Softwareentwicklung.