tiny little gizmos

PHP Applikationen entwickeln – Werkzeuge

Die Frage, wie eine vernünftige Entwicklungsumgebung einzurichten ist kommt einem Religionsstreit gleich. Jeder hat da so seine eigenen Ansichten und Vorlieben. Passend zum Jahresbeginn richtete ich mir ein PHP Entwicklungssystem neu ein. Ich möchte nicht nur erläutern was ich dabei gemacht habe, sondern vor allem auch warum ich es genau so gemacht habe.
Grundsätzlich mag ich Standards – bei Vorgehensweisen, Tools und Coding. Einige meiner Leser sind ja selber gestandene Entwickler und sehen das Eine oder Andere vielleicht anders, aber möglicherweise kann der Artikel den weniger Erfahrenen Anregungen geben.

Der komplette Entwicklungsprozess

Bevor man sich eine Entwicklungsumgebung einrichtet, sollte man sich darüber im Klaren sein, wie der komplette Entwicklungsprozess der PHP Anwendungen aussehen soll. Die eigene Entwicklungsumgebung soll sich natürlich möglichst nahtlos einfügen und den Prozess optimal unterstützen. Das folgende, dreistufige Grundprinzip hat sich bewährt:

Dev -> Stage -> Live

Das Livesystem – also das eigentliche Ziel – wird genau so eingerichtet, wie es zum Betrieb notwendig ist. Das Stagingsystem für die finale Qualitätssicherung und Abnahme durch den Kunden ist nicht öffentlich zugänglich, aber ansonsten identisch eingerichtet.

Die eigentliche Entwicklung findet dezentral auf den lokalen Rechnern der Programmierer statt. So ist gewährleistet, daß sich die Entwickler nicht mit den laufenden Änderungen gegenseitig in die Quere kommen. Die Zusammenführung des Codes findet über das Versionskontrollsystem statt. Zu beachten ist, daß sich alle Programmierer auf gemeinsame Standards zu Codingstyle und Benamung von Klassen, Methoden und Variablen einigen.

Im Folgenden betrachte ich ausschließlich die lokalen Entwicklungssysteme und klammere die Frage nach Live und Stagingserver aus, um den Umfang des Artikels nicht völlig zu sprengen.

Werkzeuge

Als Betriebssystem verwende ich Windows XP. Unter Mac OS oder Linux ist das Setup aber ähnlich. In der Tat habe ich auch meinen Apple vergleichbar eingerichtet. Ich nutze ausschließlich Open-Source Werkzeuge, von denen der größte Teil auf allen wichtigen Betriebssystemen laufen. Es werden folgende Werkzeuge benötigt:

  • Die Serverumgebung
    Die Basis eines PHP Entwicklungssystems ist natürlich der Webserver mit PHP. Meistens gehört auch eine Datenbank dazu. Im Regelfall wird man zur Kombination aus Apache Webserver, PHP und MySQL greifen, obwohl aus besonderen Gründen natürlich auch andere Kombinationen, wie z.B. LightHTTPD, PHP und PostgreSQL sinnvoll sein können. Für ersteres spricht, daß es eine Standardkombination bei fast allen Hostern ist und es einfache, vorkonfigurierte Pakete für Windows, Mac und Linux gibt. Für mich hat sich der Einsatz von XAMPP bewährt. Es enthält so ziemlich alles, was man auf einem Webserver so alles brauchen kann. So sind z.B. in der Windows Version auch PERL, ein FTP- und ein Mailserver enthalten. Ebenso weitere Tools wie PHPMyAdmin, Webalizer und eAccelrator. Neben der einfachen Installation war für mich auch wichtig, daß sich alles ebenso einfach wieder entfernen lässt. Das Paket ist hier zu bekommen:
    http://www.apachefriends.org/de/xampp.html
  • Webbrowser mit Entwicklerunterstützung
    Um Websites und Webanwendungen entwickeln zu können, benötigt man auf jeden Fall auch einen bunten Strauß an verschiedenen Webbrowsern. Ein absolutes Muß ist der Mozilla Firefox, weil er für alle wichtigen Betriebssysteme verfügbar ist, einen recht hohen Marktanteil hat, sich im Gegensatz zum Internet Explorer recht standardkonform verhält und einige wichtige Erweiterungen existieren, die das Entwicklerleben vereinfachen. Ich habe mindestens den HTML-Validator von Marc Gueury, die Web Developer Toolbar und Firebug installiert. Zusätzliche Browser zum Testen können natürlich auch nicht schaden. Firefox ist hier erhältlich:
    http://www.mozilla.com
  • Editor zu Codeeingabe
    PHP-Skripte kann man prinzipiell mit jedem beliebigen Texteditor entwickeln, der reinen Text in ASCII und UTF-8 Codierung speichern kann. Für mittlere und größere Projekte nutze ich aber gerne eine IDE, die Komfortfunktionen, wie Projektverwaltung, Code-Vervollständigung, Autoformat und Weiteres bietet. Richtig toll ist es zum Beispiel, wenn man seinen Code vernünftig kommentiert und die IDE beim Schreiben eines Funktionsaufrufs automatisch die Parameter mit Erläuterung bereithält. Der einzige Nachteil ist, daß man mit einer IDE nicht ‘mal eben’ eine einzelne Datei bearbeiten kann, die nicht im Projektkontext steht. Also benötigt man einen einfachen Editor (z.B. Notepad++ oder UltraEdit) für kleine schnelle Änderungen und eine IDE für das Projekt.Mittlerweile bin ich ein richtiger Fan von Eclipse geworden. Eclipse läuft auf allen wichtigen Betriebssystemen, ist mächtig, erweiterbar und kostenlos. Es wurde zwar ursprünglich für die JAVA-Entwicklung programmiert, aber mittlerweile gibt es eine gut an PHP angepasste Version. Diese ist hier zu bekommen:

    http://www.eclipse.org/pdt/


    http://notepad-plus.sourceforge.net/de/site.htm
  • Versionskontrolle
    Als Versionskontrollsystem bietet sich Subversion an. Hier soll es nicht darum gehen, wie man sich einen Server und ein Repository anlegt. Falls man ein Open Source Projekt beginnt, kann man sich ein entsprechendes Repository z.B. bei Sourceforge oder Freshmeat anlegen. Man benötigt auf seinem Entwicklungssystem jedoch noch einen entsprechenden Client um auf das Repository zugreifen zu können. Es gibt entsprechende Plugins für Eclipse. Auf Windows-Maschinen verwende ich jedoch lieber TortoiseSVN, das sich als Erweiterung in den Dateiexplorer integriert. Somit kann ich Subversion auch ausserhalb meiner PHP Projekte verwenden. Tortoise SVN gibt es hier:

    http://tortoisesvn.tigris.org
  • Grafikwerkzeuge
    Ein Grafikprogramm sollte man immer zur Hand haben. Sei es, um Fotos anzupassen, Hintergrundgrafiken zu bearbeiten oder Icons zu erstellen. Man muss dazu nicht unbedingt die teuren Werkzeuge Photoshop und Illustrator aus dem Hause Adobe nutzen. Ich benutze seit Jahren gerne das wesentlich günstigere PainShopPro. Es sind natürlich auch gute Open-Source-Werkzeuge, wie GIMP für Bildbearbeitung und Inkscape für Vektorgrafiken erhältlich.
    http://www.gimp.org
    http://www.inkscape.org
  • Serverzugriff
    Nun benötigen wir noch zwei kleinere Programme um unsere Projektdateien auch auf den Staging- und den Liveserver übertragen zu können und dort ggf. kleinere Anpassungen vornehmen zu können. Zur Übertragung von Dateien nutze ich WinSCP, das sowohl das normale FTP, als auch das verschlüsselte SCP beherrscht. Um den Server auf der Kommandozeile steuern zu können nutze ich das bewährte PuTTY, das sowohl telnet als auch verschlüsselte SSH-Verbindungen ermöglicht.
    http://winscp.net/eng/docs/lang:de
    http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
  • Dokumentation
    Um das eigene Entwicklungssystem zu vervollständigen, ist es sinnvoll, die Dokumentation griffbereit zu haben, falls man schnell mal etwas nachsehen will und gerade nicht online ist. Ich habe mindestens die folgende Dokumentation auf dem Rechner:
    SelfHTML, nicht mehr ganz frisch, aber immer noch sehr nützlich für Fragen zu XHTML, CSS und Javascript.
    http://aktuell.de.selfhtml.org/extras/download.shtml
    http://www.php.net/download-docs.php
    http://dev.mysql.com/doc/#refman

Die wichtigsten Werkzeuge zur Entwicklung von Webanwendungen haben wir nun zusammen. Je nach Projekt kommen natürlich noch weitere dazu, auf die ich hier aber nicht weiter eingehen möchte. In der nächsten Folge wird es darum gehen, wie man die Software einrichtet um mehrere Projekte nebeneinander bearbeiten zu können.


Bisherige Folgen:
1. PHP Applikationen entwickeln