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
- PHP CS Fixer global über Composer installieren
- NppExec-Plugin für Notepad++ installieren
- NppExec-Skript ausführen
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 Kommandofix
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
- Parameter für PSR-2 Formatierung mit
- in der letzten Zeile den nervigen "Reload"-Dialog verhindern
Das NppExec-Skript kann nun gespeichert und den Makros oder einem Shortcut hinzugefügt werden.