PHP-Syntax Überprüfung mit Flusen und wie dies zu tun auf einer Schnur, nicht eine Datei
First off, ich bin verwirrt darüber, wie man PHP in der Kommandozeile. Ich lese mehrere Artikel auf das web und Sie alle sagen, dass müssen Sie ein CLI (Command Line Interface).
Grundsätzlich habe ich PHP-Dateien, und die möchte ich nennen, so etwas wie dieses:
php -l somefile.php
Aber ich bin zu wollen, um zu überprüfen, eine string, keine Datei! Wie kann das getan werden? Kann mit STDIN, STDOUT, oder STDERR helfen, mit diesem überhaupt?
Wenn ja, wie? Kann jemand ein Beispiel hier?
Auch, wo lege ich das obige code? Ich habe keinen Zugriff auf eine Kommandozeile (ich glaube nicht), oder muss ich nur Stelle es innerhalb einer PHP-Datei selbst ausgeführt werden? Wird es diesen code ausführen, in diesem Fall werden innerhalb der Kommando-Zeile?
Ich bin völlig ahnungslos, wie dieses PHP-Befehl-Linie Sache funktioniert... Kann mir bitte jemand helfen, etwas Licht in diese Schuppen genau?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, lint code (nicht in eine Datei) die einzige Möglichkeit ist das schreiben eines wrappers.
Vorausgesetzt, Ihr $HOME/bin vor /usr/bin, können Sie installieren Sie Ihre wrapper in $HOME/bin/php, das eine andere option für die command-line-linting. Der wrapper würde erstellen Sie eine temporäre Datei, setzen Sie den code in dort führen
/usr/bin/php -l file
und dann die temporäre Datei löschen.HTH.
/bin/php -l file
funktionieren???Können Sie den code überprüfen, mit
php -l
aus STDIN durch Rohrleitungen in. Beispiel:Hier das Ende Semikolon
;
fehlt, nach der single quoted string. Wenn Sie es hinzufügen, wird die Fehlermeldung geht Weg, und PHP sagt Sie so:Den Strich
-
imErrors parsing -
oderNo syntax errors detected in -
steht für STDIN. Es wird allgemein verwendet.Andere Möglichkeit ist, den code zu schreiben, die Sie wollen, um Fusseln zu Ihrem eigenen (oder kopieren und einfügen). Dies funktioniert, indem Sie mit den lint-Schalter mit
--
, den code eingeben und finishing es, indem Sie Strg + D (Linux) /Ctrl + Z (Win) auf einer eigenen Zeile:BTW, die
-r
Schalter, der normalerweise bestimmt, um code für die Ausführung, funktioniert nicht in diesem Fall und es gibt eine Fehlermeldung:Wahrscheinlich, weil es bestimmt ist, für das ausführen von code und das Wars, kein linting. Auch ist es ohne die öffnung PHP-tag.
All diesen Optionen, der erste, der macht wahrscheinlich am meisten Sinn, wenn Sie möchten, Pipen Sie in (Sie können auch arbeiten mit
proc_open
in Fall müssen Sie mehr Kontrolle). Hier ist ein kurzes Beispiel mit Hilfe von PHP -exec
:Die Ausgabe ist wie folgt:
SIGTSTP
zu verarbeiten, in Windows == EOF senden. Nichts, was das php-binary tun kann.Ich würde vorschlagen, Check-out phpstan. Es ist ein linter mit PHP aufgebaut, und arbeitet viel, wie phpunit, aber für linting-code. Sie können schreiben, configs, Kontrolle linting Ebenen, und include/ignore-Ordner.
Es hat auch die richtige exit-codes.
https://github.com/phpstan/phpstan
Wenn die nicht möglich ist, benutzte ich dieses Skript hier und es funktioniert gut.