Kommandozeile

Aus php bar
Wechseln zu: Navigation, Suche

PHPs Kommandozeile (engl. command line interface oder CLI) ist ein Weiterentwicklung des CGI-SAPI optimiert für die Entwicklung von PHP-Anwendungen außerhalb des Web-Kontexts.

Features

  • Keine HTTP-Header
  • Direkte Code-Ausführung
  • Reflection support
  • Fehlermeldungen nur Text ohne HTML-Formatierungen.

Direkte Code-Ausführung

Für das CLI-SAPI muss der auszuführende Code nicht in einer Datei vorliegen sondern kann über verschiedene Wege an den Interpreter übergeben werden. Für einzelne, kurze statements gibt es den Kommandozeilenparameter -r. Nach -r wird PHP Code erwartet, der ausgeführt werden soll, der Code benötigt dabei, wie bei eval kein öffnenden PHP-Tag.

$ php -r '$a = 0; echo ++$a;'
1

Bei der Nutzung müssen die Ersetzungsregeln der Shell berücksichtigt werden. So würde bei

$ php -r "$A = 1; echo $A;"

zunächst die Shell $A mit der entsprechenden Umgebungsvariablen ersetzen und dann das Statement an PHP übergeben. Falls $A im Environment nicht definiert ist entspricht obiges Beispiel dem Aufruf

$ php -r " = 1; echo ;"

was zu einem Parse Error führt.

Mit dem Kommandozeilenparameter -a startet PHP den interactive mode. In diesem Modus werden einzelne Statements direkt nach Eingabe verarbeitet. Ab PHP 5.1 beinhaltet dieser Modus eine interaktive Shell mit Unterstützung der typischen Readline-Funktionalitäten (History, tab-completion, etc.)

Reflection Support

Mit den Kommandozeilenparametern --rf, --rc und --re erhält man Informationen über die internen Funktionen, Klassen und die geladenen Erweiterungen.

$ php --re pcre
Extension [ <persistent> extension #23 pcre version <no_version> ] {

  - Constants [7] {
    Constant [ integer PREG_PATTERN_ORDER ] { }
    Constant [ integer PREG_SET_ORDER ] { }
    Constant [ integer PREG_OFFSET_CAPTURE ] { }
    Constant [ integer PREG_SPLIT_NO_EMPTY ] { }
    Constant [ integer PREG_SPLIT_DELIM_CAPTURE ] { }
    Constant [ integer PREG_SPLIT_OFFSET_CAPTURE ] { }
    Constant [ integer PREG_GREP_INVERT ] { }
  }

  - Functions {
    Function [ <internal> public function preg_match ] {

      - Parameters [3] {
        Parameter #0 [ <required> $param0 ]
        Parameter #1 [ <required> $param1 ]
        Parameter #2 [ <required> &$param2 ]
       }
     }
    Function [ <internal> public function preg_match_all ] {

      - Parameters [3] {
        Parameter #0 [ <required> $param0 ]
        Parameter #1 [ <required> $param1 ]
        Parameter #2 [ <required> &$param2 ]
      }
    }
    Function [ <internal> public function preg_replace ] {
    }
    Function [ <internal> public function preg_replace_callback ] {
    }
    Function [ <internal> public function preg_split ] {
    }
    Function [ <internal> public function preg_quote ] {
    }
    Function [ <internal> public function preg_grep ] {
    }
  }
}

Links