{"id":531,"date":"2009-01-21T22:49:29","date_gmt":"2009-01-21T21:49:29","guid":{"rendered":"http:\/\/ollmetzer\/?p=531"},"modified":"2010-06-21T20:54:48","modified_gmt":"2010-06-21T18:54:48","slug":"php-applikationen-entwickeln-werkzeuge","status":"publish","type":"post","link":"https:\/\/www.ollmetzer.com\/?p=531","title":{"rendered":"PHP Applikationen entwickeln &#8211; Werkzeuge"},"content":{"rendered":"<p>Die Frage, wie eine vern\u00fcnftige 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\u00f6chte nicht nur erl\u00e4utern <em>was<\/em> ich dabei gemacht habe, sondern vor allem auch <em>warum<\/em> ich es genau so gemacht habe.<br \/>\nGrunds\u00e4tzlich mag ich Standards &#8211; bei Vorgehensweisen, Tools und Coding. Einige meiner Leser sind ja selber gestandene Entwickler und sehen das Eine oder Andere vielleicht anders, aber m\u00f6glicherweise kann der Artikel den weniger Erfahrenen Anregungen geben.<\/p>\n<p><strong>Der komplette Entwicklungsprozess<\/strong><\/p>\n<p>Bevor man sich eine Entwicklungsumgebung einrichtet, sollte man sich dar\u00fcber im Klaren sein, wie der komplette Entwicklungsprozess der PHP Anwendungen aussehen soll. Die eigene Entwicklungsumgebung soll sich nat\u00fcrlich m\u00f6glichst nahtlos einf\u00fcgen und den Prozess optimal unterst\u00fctzen. Das folgende, dreistufige Grundprinzip hat sich bew\u00e4hrt:<\/p>\n<blockquote><p>Dev -&gt; Stage -&gt; Live<\/p><\/blockquote>\n<p>Das Livesystem &#8211; also das eigentliche Ziel &#8211; wird genau so eingerichtet, wie es zum Betrieb notwendig ist. Das Stagingsystem f\u00fcr die finale Qualit\u00e4tssicherung und Abnahme durch den Kunden ist nicht \u00f6ffentlich zug\u00e4nglich, aber ansonsten identisch eingerichtet.<\/p>\n<p>Die eigentliche Entwicklung findet dezentral auf den lokalen Rechnern der Programmierer statt. So ist gew\u00e4hrleistet, da\u00df sich die Entwickler nicht mit den laufenden \u00c4nderungen gegenseitig in die Quere kommen. Die Zusammenf\u00fchrung des Codes findet \u00fcber das Versionskontrollsystem statt. Zu beachten ist, da\u00df sich alle Programmierer auf gemeinsame Standards zu Codingstyle und Benamung von Klassen, Methoden und Variablen einigen.<\/p>\n<p>Im Folgenden betrachte ich ausschlie\u00dflich die lokalen Entwicklungssysteme und klammere die Frage nach Live und Stagingserver aus, um den Umfang des Artikels nicht v\u00f6llig zu sprengen.<\/p>\n<p><strong>Werkzeuge<\/strong><\/p>\n<p>Als Betriebssystem verwende ich Windows XP. Unter Mac OS oder Linux ist das Setup aber \u00e4hnlich. In der Tat habe ich auch meinen Apple vergleichbar eingerichtet. Ich nutze ausschlie\u00dflich Open-Source Werkzeuge, von denen der gr\u00f6\u00dfte Teil auf allen wichtigen Betriebssystemen laufen. Es werden folgende Werkzeuge ben\u00f6tigt:<\/p>\n<ul>\n<li><strong>Die Serverumgebung<\/strong><br \/>\nDie Basis eines PHP Entwicklungssystems ist nat\u00fcrlich der Webserver mit PHP. Meistens geh\u00f6rt auch eine Datenbank dazu. Im Regelfall wird man zur Kombination aus Apache Webserver, PHP und MySQL greifen, obwohl aus besonderen Gr\u00fcnden nat\u00fcrlich auch andere Kombinationen, wie z.B. LightHTTPD, PHP und PostgreSQL sinnvoll sein k\u00f6nnen. F\u00fcr ersteres spricht, da\u00df es eine Standardkombination bei fast allen Hostern ist und es einfache, vorkonfigurierte Pakete f\u00fcr Windows, Mac und Linux gibt. F\u00fcr mich hat sich der Einsatz von XAMPP bew\u00e4hrt. Es enth\u00e4lt 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\u00fcr mich auch wichtig, da\u00df sich alles ebenso einfach wieder entfernen l\u00e4sst. Das Paket ist hier zu bekommen:<br \/>\n<a title=\"XAMPP\" href=\"http:\/\/www.apachefriends.org\/de\/xampp.html\">http:\/\/www.apachefriends.org\/de\/xampp.html<\/a>\n<\/li>\n<li><strong>Webbrowser mit Entwicklerunterst\u00fctzung<\/strong><br \/>\nUm Websites und Webanwendungen entwickeln zu k\u00f6nnen, ben\u00f6tigt man auf jeden Fall auch einen bunten Strau\u00df an verschiedenen Webbrowsern. Ein absolutes Mu\u00df ist der Mozilla Firefox, weil er f\u00fcr alle wichtigen Betriebssysteme verf\u00fcgbar ist, einen recht hohen Marktanteil hat, sich im Gegensatz zum Internet Explorer recht standardkonform verh\u00e4lt 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\u00e4tzliche Browser zum Testen k\u00f6nnen nat\u00fcrlich auch nicht schaden. Firefox ist hier erh\u00e4ltlich:<br \/>\n<a title=\"Mozilla: Firefox &amp; Thunderbird\" href=\"http:\/\/www.mozilla.com\">http:\/\/www.mozilla.com<\/a>\n<\/li>\n<li><strong>Editor zu Codeeingabe<\/strong><br \/>\nPHP-Skripte kann man prinzipiell mit jedem beliebigen Texteditor entwickeln, der reinen Text in ASCII und UTF-8 Codierung speichern kann. F\u00fcr mittlere und gr\u00f6\u00dfere Projekte nutze ich aber gerne eine IDE, die Komfortfunktionen, wie Projektverwaltung, Code-Vervollst\u00e4ndigung, Autoformat und Weiteres bietet. Richtig toll ist es zum Beispiel, wenn man seinen Code vern\u00fcnftig kommentiert und die IDE beim Schreiben eines Funktionsaufrufs automatisch die Parameter mit Erl\u00e4uterung bereith\u00e4lt. Der einzige Nachteil ist, da\u00df man mit einer IDE nicht &#8218;mal eben&#8216; eine einzelne Datei bearbeiten kann, die nicht im Projektkontext steht. Also ben\u00f6tigt man einen einfachen Editor (z.B. Notepad++ oder UltraEdit) f\u00fcr kleine schnelle \u00c4nderungen und eine IDE f\u00fcr das Projekt.Mittlerweile bin ich ein richtiger Fan von Eclipse geworden. Eclipse l\u00e4uft auf allen wichtigen Betriebssystemen, ist m\u00e4chtig, erweiterbar und kostenlos. Es wurde zwar urspr\u00fcnglich f\u00fcr die JAVA-Entwicklung programmiert, aber mittlerweile gibt es eine gut an PHP angepasste Version. Diese ist hier zu bekommen:<br \/>\n<a title=\"Eclipse PHP Development Tools\" href=\"http:\/\/www.eclipse.org\/pdt\/\"><br \/>\nhttp:\/\/www.eclipse.org\/pdt\/<\/a><br \/>\n<a title=\"Notepad++\" href=\"http:\/\/notepad-plus.sourceforge.net\/de\/site.htm\"><br \/>\nhttp:\/\/notepad-plus.sourceforge.net\/de\/site.htm<\/a>\n<\/li>\n<li><strong>Versionskontrolle<br \/>\n<\/strong>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\u00f6tigt auf seinem Entwicklungssystem jedoch noch einen entsprechenden Client um auf das Repository zugreifen zu k\u00f6nnen. Es gibt entsprechende Plugins f\u00fcr 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:<br \/>\n<a title=\"Tortoise SVN\" href=\"http:\/\/tortoisesvn.tigris.org\"><br \/>\nhttp:\/\/tortoisesvn.tigris.org<\/a>\n<\/li>\n<li><strong>Grafikwerkzeuge<\/strong><br \/>\nEin 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\u00fcnstigere PainShopPro. Es sind nat\u00fcrlich auch gute Open-Source-Werkzeuge, wie GIMP f\u00fcr Bildbearbeitung und Inkscape f\u00fcr Vektorgrafiken erh\u00e4ltlich.<br \/>\n<a title=\"GIMP\" href=\" http:\/\/www.gimp.org\">http:\/\/www.gimp.org<\/a><br \/>\n<a title=\"Inkscape\" href=\"http:\/\/www.inkscape.org\">http:\/\/www.inkscape.org<\/a>\n<\/li>\n<li><strong>Serverzugriff<\/strong><br \/>\nNun ben\u00f6tigen wir noch zwei kleinere Programme um unsere Projektdateien auch auf den Staging- und den Liveserver \u00fcbertragen zu k\u00f6nnen und dort ggf. kleinere Anpassungen vornehmen zu k\u00f6nnen. Zur \u00dcbertragung von Dateien nutze ich WinSCP, das sowohl das normale FTP, als auch das verschl\u00fcsselte SCP beherrscht. Um den Server auf der Kommandozeile steuern zu k\u00f6nnen nutze ich das bew\u00e4hrte PuTTY, das sowohl telnet als auch verschl\u00fcsselte SSH-Verbindungen erm\u00f6glicht.<br \/>\n<a title=\"WinSCP\" href=\"http:\/\/winscp.net\/eng\/docs\/lang:de\">http:\/\/winscp.net\/eng\/docs\/lang:de<\/a><br \/>\n<a title=\"PuTTY\" href=\"http:\/\/www.chiark.greenend.org.uk\/~sgtatham\/putty\/download.html\">http:\/\/www.chiark.greenend.org.uk\/~sgtatham\/putty\/download.html<\/a>\n<\/li>\n<li><strong>Dokumentation<\/strong><br \/>\nUm das eigene Entwicklungssystem zu vervollst\u00e4ndigen, 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:<br \/>\nSelfHTML, nicht mehr ganz frisch, aber immer noch sehr n\u00fctzlich f\u00fcr Fragen zu XHTML, CSS und Javascript.<br \/>\n<a title=\"SelfHTML\" href=\"http:\/\/aktuell.de.selfhtml.org\/extras\/download.shtml\">http:\/\/aktuell.de.selfhtml.org\/extras\/download.shtml<\/a><br \/>\n<a title=\"PHP Dokumentation\" href=\"http:\/\/www.php.net\/download-docs.php\">http:\/\/www.php.net\/download-docs.php<\/a><br \/>\n<a title=\"MySQL Reference Manual\" href=\"http:\/\/dev.mysql.com\/doc\/#refman\">http:\/\/dev.mysql.com\/doc\/#refman<\/a>\n<\/li>\n<\/ul>\n<p>Die wichtigsten Werkzeuge zur Entwicklung von Webanwendungen haben wir nun zusammen. Je nach Projekt kommen nat\u00fcrlich noch weitere dazu, auf die ich hier aber nicht weiter eingehen m\u00f6chte. In der n\u00e4chsten Folge wird es darum gehen, wie man die Software einrichtet um mehrere Projekte nebeneinander bearbeiten zu k\u00f6nnen.<\/p>\n<p>&#8212;<br \/>\nBisherige Folgen:<br \/>\n1. <a title=\"Folge 1\" href=\"http:\/\/www.ollmetzer.com\/blog\/index.php?\/archives\/526-PHP-Applikationen-entwickeln.html\">PHP Applikationen entwickeln<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Frage, wie eine vern\u00fcnftige 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\u00f6chte nicht nur erl\u00e4utern was ich dabei gemacht habe, sondern vor allem auch warum ich es genau so gemacht habe. Grunds\u00e4tzlich mag [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-531","post","type-post","status-publish","format-standard","hentry","category-development"],"_links":{"self":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts\/531","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=531"}],"version-history":[{"count":1,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts\/531\/revisions"}],"predecessor-version":[{"id":888,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts\/531\/revisions\/888"}],"wp:attachment":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=531"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=531"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}