Zunächst einmal bin ich verwirrt darüber, wie PHP in der Befehlszeile ausgeführt wird. Ich habe mehrere Artikel im Internet gelesen und sie alle sagen, dass Sie eine CLI (Command Line Interface) benötigen.
Grundsätzlich habe ich PHP-Dateien, und ich möchte etwas wie folgt nennen:
%Vor%Aber ich möchte eine Zeichenfolge überprüfen, keine Datei! Wie kann das gemacht werden? Kann die Verwendung von STDIN , STDOUT oder STDERR dabei helfen?
Wenn ja, wie? Kann hier jemand ein Beispiel geben?
Auch wo platziere ich das über dem Code? Ich habe keinen Zugriff auf eine Befehlszeile (glaube ich nicht), oder lege ich es einfach in eine PHP-Datei selbst, die ausgeführt wird? Wird es diesen Code in diesem Fall innerhalb der Befehlszeile ausführen?
Ich bin völlig ahnungslos, wie diese PHP-Befehlszeilen-Sache funktioniert ... Kann mir bitte jemand helfen, etwas Licht auf dieses Thema zu werfen?
Wenn Sie einen Lint-Code (nicht in einer Datei) wollen, ist die einzige Option, einen Wrapper zu schreiben.
Wenn Sie $ HOME / bin vor / usr / bin verwenden, könnten Sie Ihren Wrapper in $ HOME / bin / php installieren, der eine andere Option für das Lintining der Befehlszeile hat. Der Wrapper würde eine temporäre Datei erstellen, den Code dort eingeben, /usr/bin/php -l file
ausführen und dann die temporäre Datei löschen.
HTH.
Sie können den Code mit php -l
von STDIN überprüfen, indem Sie ihn einbinden. Beispiel:
Hier fehlt das Endsemikolon ;
nach dem einzelnen String in Anführungszeichen. Wenn Sie es hinzufügen, verschwindet der Fehler und PHP sagt Ihnen Folgendes:
Der Bindestrich -
in Errors parsing -
oder No syntax errors detected in -
steht für STDIN. Es wird häufig dafür verwendet.
Eine andere Möglichkeit ist das Schreiben des gewünschten Codes (oder Kopieren und Einfügen). Dies funktioniert, indem Sie den Schalter lint mit --
verwenden, den Code eingeben und ihn durch Eingabe von Strg + D (Linux) / Strg + Z (Win) in einer Zeile beenden für sich:
BTW, der Schalter -r
, der normalerweise Code zur Ausführung bereitstellen soll, funktioniert in diesem Fall nicht und gibt einen Fehler:
Am wahrscheinlichsten, weil es zum Ausführen von Code gedacht ist und das ist es, kein Linting. Es ist auch ohne das öffnende PHP-Tag.
Von all diesen Optionen macht die erste wahrscheinlich am meisten Sinn, wenn Sie sie in die Pipeline leiten wollen (Sie könnten auch mit proc_open
falls Sie mehr Kontrolle brauchen. Hier ist ein kurzes Beispiel mit PHP exec
:
Die Ausgabe ist wie folgt:
%Vor%Ich würde vorschlagen, phpstan auszuprobieren. Es ist ein Linter, der mit PHP erstellt wurde, und funktioniert ähnlich wie phpunit, aber für das Einfügen von Code. Sie können Konfigurationen schreiben, Löschstufen steuern und Ordner einschließen / ignorieren.
Es hat auch richtige Exit-Codes.
Wenn das nicht möglich ist, habe ich dieses Skript hier verwendet und es funktioniert gut.
Tags und Links php command-line syntax-error