PSR-2 & Notepad++

Standards sind wichtig. Ganz wichtig sind sie in der Programmierung! Damit sich der eigene PHP-Code an Standards hält kann man entweder beim Verfassen der Zeilen selbst darauf achten oder - wie es sich für einen EDV-Menschen gehört - die "dumme Arbeit" einem Programm überlassen.


TL;DR


Was ist PSR-2?

Für PHP haben sich die Vorgaben von PSR-2 (PHP Standard Recommendation) für die Formatierung durchgesetzt. Hier wird geklärt wie Arrays geschrieben werden (lang $array = array( 1, 2, 3 ); oder kurz $array = [ 1, 2, 3 ];), wann und wo geschweifte Klammern { auf und zu } gehen (in der selben Zeile oder doch lieber darunter) oder ob eine Leere Zeile vor oder nach einer Funktion oder Schleife eingefügt wird.

Notepad++

Natürlich kann man hochmoderne integrierte Entwicklungsumgebungen (IDE) nutzen, die PSR-2 von haus aus beherrschen (PHPStorm) oder einfach erlernen können (Visual Studio Code). Mir altem Gewohnheitstier ist das jedoch nichts. Ich möchte mein gutes altes Notepad++ benutzen und trotzdem PSR-2 formatierten PHP-Code schreiben ohne darauf zu achten.

Zutaten

PHP Cs Fixer

Für alles gibt es Helferlein. Damit PHP-Code nach den PSR-2 Vorgaben formatiert wird benötigt man ein Programm, welches diese Vorgaben umsetzt. Hier kommt der PHP Coding Standards Fixer (PHP CS Fixer) ins Spiel. Über Composer sollte dieser global installiert werden: C:> composer global require friendsofphp/php-cs-fixer

Im Verzeichnis C:\Users\$BENUTZERNAME\AppData\Roaming\Composer\vendor\bin steht dann der PHP CS Fixer als BAT-Datei zur Ausführung bereit.

NppExec

Nun muss Notepad++ nur noch wissen, wie die php-cs-fixer.bat anzusprechen ist. Hier kommt das Notepad++ Plugin NppExec zum Einsatz. Über eine einfache Skriptsprache in NppExec kann Notepad++ erweitert werden.

NppExec-Skript

Ein Skript, um geöffneten PHP-Code PSR-2 konform zu formatieren, sieht dann beispielsweise so aus.

NPP_CONSOLE OFF
NPP_SAVE
$(SYS.APPDATA)\Composer\vendor\bin\php-cs-fixer.bat fix --config "$(SYS.APPDATA)\Composer\vendor\bin\.php_cs" "$(FULL_CURRENT_PATH)"
NPP_SENDMSG NPPM_RELOADFILE 0 "$(FULL_CURRENT_PATH)"
  • NPP_CONSOLE OFF deaktiviert die NppExec-Console
  • mit NPP_SAVE wird die aktuelle Datei gespeichert
  • php-cs-fixer.bat mit dem Kommando fix aufrufen
    • Parameter für PSR-2 Formatierung mit --config übergeben (liegt bei mir im angegebenen Ordner)
    • zu formatierende Datei wird mittels $(FULL_CURRENT_PATH) definiert
  • in der letzten Zeile den nervigen "Reload"-Dialog verhindern

Das NppExec-Skript kann nun gespeichert und den Makros oder einem Shortcut hinzugefügt werden.

Quellen

Über Arne Uplegger

Arne Uplegger ist norddeutscher Europäer, Platt-Schnacker und weiß seit 1998 wie man einen Computer einschaltet. Nebenbei spielt er leidenschaftlich unmusikalisch die Triola, beschäftigt sich mit Klemmbausteinen oder experimentiert mit Webtechnologien und Grafiken. Auf Twitter ist er als @upputter unterwegs.