~/blog/2012/03/php-entwicklung-mit-visual-studio.md

PHP-Entwicklung mit Visual Studio 2010

6 min
PHP-Code mit IntelliSense in einer Entwicklungsumgebung (eigene Grafik)

Keine Zeit? Hier die Kurzversion in 30 Sekunden.

  • VS.php 2.10 bringt PHP als Add-on in Visual Studio 2005, 2008 und 2010, inklusive IntelliSense und Debugging.
  • Presets wie Local und Production trennen Entwicklung und Live-System sauber.
  • Hochgeladen werden nur die geänderten Dateien, ein komplettes Update-Paket ist trotzdem möglich.
  • Das Add-on kostet etwa 100 €; laut Hersteller liegt eine kostenlose VS-Shell bei (nicht verifiziert).
  • Dazu passen Subversion und die Template-Engine Smarty.

Hinweis: Stand März 2012. Preise, Versionen und Verfügbarkeit können sich geändert haben.

Ist PHP eine Auszeichnungssprache, eine Programmiersprache oder doch nur eine Skriptsprache? Im Web gehen die Meinungen dazu weit auseinander. Klar ist für mich: PHP gehört zu den Skriptsprachen und unterscheidet sich deutlich von HTML. Eine Auszeichnungssprache beschreibt nur, wie Inhalte aufgebaut sind, eine Überschrift, ein Absatz, ein Bild. Eine Skriptsprache dagegen führt auf dem Server Anweisungen aus, entscheidet, rechnet, liest Daten und erzeugt dabei erst das HTML, das der Browser am Ende sieht.

Zu der Verwechslung kommt es sicher durch eine gängige Praxis: Code und visuelle Elemente landen gemeinsam in denselben Dateien. Ein Stück PHP, dann ein Block HTML, dann wieder PHP. Wer auf diesem Niveau immer noch Websites baut, dem lege ich die Template-Engine Smarty ans Herz.

Warum ich Logik und Darstellung trenne

Eine Template-Engine wie Smarty trennt die Logik von der Darstellung. Die PHP-Dateien holen Daten und treffen Entscheidungen, die Templates kümmern sich nur noch um die Ausgabe. Das hat handfeste Vorteile. Ein Designer kann das Aussehen anpassen, ohne versehentlich in der Programmlogik herumzuwühlen. Ein Entwickler kann die Logik ändern, ohne das Layout zu zerlegen. Und der Code bleibt lesbar, weil nicht in jeder Datei alles durcheinander steht. Gerade bei größeren Projekten merkt man schnell, wie viel Ruhe das bringt.

Ein kleines Beispiel aus dem Alltag: Soll sich die Darstellung einer Produktliste ändern, ist das ein Eingriff im Template. Die Abfrage der Daten bleibt davon unberührt. Umgekehrt muss ich beim Umbau der Datenbankabfrage kein HTML anfassen. Diese klare Aufgabenteilung macht Fehler leichter eingrenzbar und spart beim Suchen viel Zeit.

Vom einfachen Texteditor zur Entwicklungsumgebung

Webseiten in einem schlichten Texteditor zu “programmieren”: Wer kennt das nicht? Zugegeben, Laien kann man damit beeindrucken. Praktisch nenne ich diese Arbeitsweise aber nicht. Der Entwickler muss alle Funktionen und Methoden der Sprache auswendig kennen und richtig anwenden. Wer so produktiv und zuverlässig arbeitet, dem gebührt mein persönlicher Respekt.

Eine Evolutionsstufe weiter sehe ich Editoren mit Syntax-Highlighting. Sie erkennen Schlüsselwörter der Sprache, bekannte Funktionen und Variablen und heben sie farbig hervor. Das klingt nach Kosmetik, hilft aber enorm: Ein vergessenes Anführungszeichen oder ein falsch geschriebenes Schlüsselwort fällt sofort auf, und die Wartbarkeit und Lesbarkeit verbessern sich deutlich.

Die nächste Stufe ist eine echte Entwicklungsumgebung, kurz IDE. Sie kennt nicht nur die Wörter der Sprache, sondern auch den Zusammenhang. Dazu gehört automatische Vervollständigung, die Methoden und Parameter vorschlägt, noch während man tippt. Dazu gehört ein Debugger, mit dem man Programme Schritt für Schritt durchläuft, an einem Haltepunkt (Breakpoint) anhält und sich die aktuellen Werte der Variablen ansieht. Bei PHP läuft das meist über eine Debug-Erweiterung auf dem Server wie Xdebug. Das ist ein gewaltiger Unterschied zur Methode, überall Ausgaben in den Code zu schreiben und zu hoffen, dass man den Fehler findet.

VS.php: PHP in Visual Studio

Einer kleinen Software-Schmiede aus den USA ist hier ein großer Wurf gelungen. Microsoft Visual Studio 2010, für mich die Entwicklungsumgebung schlechthin, hat per Add-on die Skriptsprache PHP beigebracht bekommen. Das Add-on heißt “VS.php 2.10” und unterstützt Visual Studio 2005, 2008 und 2010.

Besonders interessant finde ich die zahlreichen Debug-Funktionen und das bestens funktionierende IntelliSense. Das kennt man bereits von Sprachen wie C# oder C++: Beim Tippen schlägt die IDE passende Methoden und Variablen vor und zeigt Hinweise zu ihrer Verwendung. Darüber hinaus gibt es verschiedene Presets, mit denen sich auch größere Projekte komfortabel verwalten lassen. In Kombination mit Subversion wird das Add-on für mich zum “Must Have” für jeden professionellen Website-Entwickler.

Subversion ist ein zentrales System zur Versionsverwaltung. Es speichert jeden Stand des Codes und merkt sich, wer was wann geändert hat. Man kann Änderungen nachvollziehen, einen früheren Stand wiederherstellen und im Team an denselben Dateien arbeiten, ohne sich gegenseitig zu überschreiben. Wer ohne Versionsverwaltung arbeitet, hat im Zweifel nur Kopien wie “index_alt2_final.php” auf der Platte.

Local, Staging und Production

Ein erster Schritt in die richtige Richtung ist eine lokale Entwicklungsumgebung oder ein Testsystem. Trotzdem höre ich immer wieder, dass direkt auf dem Live-System “entwickelt” wird. Das ist ein absolutes No-Go und weit weg von jeder Professionalität. Jeder Tippfehler ist sofort für alle Besucher sichtbar, und ein halbfertiges Feature kann die ganze Seite lahmlegen.

Sauber ist die Trennung in drei Umgebungen. Local ist der eigene Rechner, auf dem entwickelt und ausprobiert wird. Staging ist ein Testsystem, das dem Live-System möglichst ähnlich ist und auf dem man vor dem Start alles abnimmt. Production ist das Live-System, das die Besucher sehen. Eine Änderung wandert nur nach oben, wenn sie die Stufe davor bestanden hat.

Presets und Deployment mit VS.php

Wenn alles richtig läuft und die Tests abgeschlossen sind, bleibt das langatmige Aktualisieren des Live-Systems auf den gewünschten Versionsstand. Diverse Tools können hier unterstützen, geraten aber schnell an ihre Grenzen. Bei jedem Update die komplette Version auszutauschen ist für mich keine zufriedenstellende Lösung.

“VS.php 2.10” bietet dafür eine intelligente Verwaltung, die über die Presets gesteuert wird. Entwickle ich neue Features, arbeite ich unter dem Preset “Local”. Dort kann ich sämtliche Code-Passagen debuggen und die Methoden auf Herz und Nieren prüfen. Ist die Funktionalität gewährleistet, spiele ich die Dateien ins Live-System ein, über das Preset “Production”.

Das manuelle Hochladen per FTP funktioniert zwar, ist aber mit Aufwand verbunden. Man muss wissen, welche Dateien sich geändert haben, und vergisst im Alltag leicht eine. Genau hier hilft das Versionsmanagement des Add-ons: Es erkennt selbst, welche Dateien sich geändert haben, und stellt nur diese im Live-System bereit. Das spart Zeit und verringert die Fehlerquote. Wer es lieber klassisch mag, kann die Umgebung natürlich so definieren, dass lokal ein komplettes Update-Paket erstellt wird.

Ob die Software mit mehreren Entwicklern gut klarkommt, wird die Zukunft zeigen. Das konnte ich bisher nicht beurteilen.

Preise und Verfügbarkeit

Bei Java weiß man, dass professionelle Entwicklungsumgebungen nicht zwangsläufig Geld kosten. VS.php 2.10 setzt dagegen auf die kostenpflichtige IDE Microsoft Visual Studio in den Versionen 2005, 2008 und 2010. Das Add-on selbst schlägt mit etwa 100 € ebenfalls zu Buche.

Laut Hersteller ist Visual Studio nicht zwingend erforderlich, weil bei Bedarf eine kostenlose Variante mitgeliefert wird, die Visual Studio Shell. Diese Angabe kann ich allerdings nicht verifizieren. Wer es ausprobieren will, sollte das vor dem Kauf klären.

Mein Fazit

Für mich ist das Add-on ein deutlicher Mehrwert. Die Kosten amortisieren sich aufgrund der massiven Zeitersparnis sicher schnell. Gutes Werkzeug ersetzt keine saubere Arbeitsweise, aber es macht sie leichter: getrennte Umgebungen, Versionsverwaltung, ein Debugger statt Raten. Das alles zusammen ist der Unterschied zwischen Basteln und professioneller Entwicklung.

Wichtig finde ich dabei die Haltung dahinter. Ein Werkzeug nimmt mir das Denken nicht ab, aber es nimmt mir die Routine ab, die nur Nerven kostet. Wer seine Zeit nicht mit Dateivergleichen, Hochladen und Fehlersuche im Blindflug verbringt, hat mehr davon für die eigentliche Aufgabe: gute Software zu bauen.

Nachtrag: Heute entwickeln viele PHP-Entwickler mit kostenlosen Editoren wie Visual Studio Code samt PHP-Erweiterungen oder mit spezialisierten IDEs wie PhpStorm. Git hat Subversion weitgehend abgelöst.

$ whoami
Christian Ackermann

Softwareentwickler (C++, C, Java, C#) aus der Oberpfalz, bloggt seit 2001 über Linux, Technik und Kochen.