PHP Syntax Checking mit lint und wie man dies in einem String tut, nicht in einer Datei

8

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?

    
Solomon Closson 28.08.2012, 04:26
quelle

3 Antworten

4

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.

    
g13n 28.08.2012, 04:32
quelle
14

Sie können den Code mit php -l von STDIN überprüfen, indem Sie ihn einbinden. Beispiel:

%Vor%

Hier fehlt das Endsemikolon ; nach dem einzelnen String in Anführungszeichen. Wenn Sie es hinzufügen, verschwindet der Fehler und PHP sagt Ihnen Folgendes:

%Vor%

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:

%Vor%

BTW, der Schalter -r , der normalerweise Code zur Ausführung bereitstellen soll, funktioniert in diesem Fall nicht und gibt einen Fehler:

%Vor%

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 :

%Vor%

Die Ausgabe ist wie folgt:

%Vor%     
hakre 14.08.2013 22:07
quelle
1

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.

    
james2doyle 02.02.2017 21:52
quelle

Tags und Links