PHP-Code in Sublime Text 3 nach PSR-2-Standard formatieren (und auf Fehler prüfen)

Am Anfang stellt sich die Frage: Wieso sollte man seinen PHP-Code eigentlich nach einem bestimmten Standard formatieren? Die Antwort in aller Kürze ist, dass es die Lesbarkeit des Codes im Allgemeinen erhöht.

Best Practices für die Formatierung werden durch die Einhaltung eines Standards über verschiedene Entwickler und Projekte hinweg eingehalten, so dass sich neue Entwickler zum einen schneller einlesen können, man sich aber auch an diese „Standardschreibweise“ gewöhnt und damit fremden Code schneller auffassen kann.

Grundsätzlich also ein sinnvolles Vorhaben, das durch die „Framework Interoperability Group“ vorangetrieben wird. PSR steht dabei für „PHP Standard Recommendation“, Version 2 dieses Standards ist die aktuell gültige, die als Maßstab für PHP-Entwickler dienen sollte.

Um unseren Code automatisch auf diese Weise zu formatieren, kommt das PHP-CS-Fixer-Paket zum Einsatz.

System vorbereiten

Ich setze darauf, dass auf einem Rechner mit mac OS homebrew oder etwas ähnliches als Paketmanager installiert ist, Windows-Nutzer müssen entsprechend schauen, wie sie die benötigten Pakete installiert bekommen.

Als Basis sollte man eine aktuelle Version von PHP installieren. Sollte PHP auf dem System bereits installiert sein, lässt sich mit dem Aufruf von php --version im Terminal prüfen, welche Version installiert ist.

Der PHP-CS-Fixer benötigt mindestens PHP 5.6.0, aber PHP 7 bringt einiges an Performance-Verbesserungen mit, die man nach Möglichkeit nutzen sollte.

brew unlink php56
brew install php72

Dies würde ein PHP 5.6.0 deinstallieren und stattdessen ein frisches PHP 7.2 installieren. Die Versionsnummern muss man gegebenenfalls entsprechend anpassen.

Anschließend kann PHP-CS-Fixer heruntergeladen, ausführbar gemacht und an einen sicheren (wie ein „wird nicht aus Versehen gelöscht“) Ort verschoben werden:

wget http://get.sensiolabs.org/php-cs-fixer.phar -O php-cs-fixer
sudo chmod a+x php-cs-fixer
sudo mv php-cs-fixer /usr/local/bin/php-cs-fixer

Wer jetzt php-cs-fixer im Terminal eingibt, sollte eine Rückmeldung vom frisch installierten PHP-CS-Fixer erhalten.

Integration in Sublime Text 3

Sublime Text 3 bringt ein integriertes Build System mit, das verschiedene Aktionen auf einer geöffneten Datei oder einem Projekt ausführen kann. Einige Presets finden sich bereits unter Tools -> Build System, aber darunter ist keines für PHP nach PSR-2-Standard.

Wir klicken also unten auf „New Build System“ und ein Editorfenster öffnet sich. Hier ist bereits ein grundlegendes Template angelegt, das wir mit folgendem Inhalt überschreiben:

{
    "shell_cmd": "php-cs-fixer fix $file --rules=@PSR2"
}

Die Datei speichern wir unter einem eindeutigen Namen, PHP-PSR-2.sublime-build wäre eine gute Option, und das Ganze sollte jetzt als neues Build System in der zuvor erwähnten Liste auftauchen. Einmal auf unser PHP-PSR-2 klicken, sofern noch nicht ausgewählt, um es als Standard-System auszuwählen

Wenn man jetzt in einer geöffneten PHP-Datei Command + B drückt, nimmt der PHP-CS-Fixer seine Arbeit auf und formatiert den Code nach PSR-2-Standard, wo nötig, neu.

Bonus: PHP-Datei auf Fehler prüfen

Der PHP-CS-Fixer ist super geeignet um den Code zu formatieren, aber Fehler im Code, zum Beispiel fehlende Parameter, wird er nicht erkennen.

Update: Wie ich aus eigener Erfahrung mittlerweile berichten kann, wird vor dem Formatieren des Codes auch ein Linting (syntaktische Prüfung des Codes) durchgeführt. Das Ganze über das Build System abermals laufen zu lassen wäre also übertrieben, ich habe den entsprechenden Absatz deshalb entfernt.

Photo by Henri L. on Unsplash


Über mich

Ich bin gelernter Mediengestalter, studierter Druck- und Medientechniker und leidenschaftlicher Tüftler und Bastler.

Beruflich beschäftige ich mich mit der digitalen Transformation von Unternehmen, sowie der Automatisierung von Unternehmensprozessen, in der Druck- und Medienbranche. Mehr dazu findet sich im Lebenslauf.

Privat interessieren mich Kaffee(maschinen), Themen rund um Webentwicklung, das Internet im Allgemeinen und Speziellen und vieles, vieles mehr.

Ich freue mich auf Feedback per E-Mail unter kontakt@flomei.de, einen Euro für die Kaffeekasse oder etwas von meiner Amazon Wunschliste.