Nachdem Sie den Satz von Anweisungen unten Sie machen können ein Aufruf wie folgt:
phpcl yourscript.php _GET = '{ "key1": "val1", "key2": "val2"}'
um dies zu erhalten Sie, bevor Sie das Skript ausführen müssen Code arbeiten gerufen werden. Ich benutze eine Bash-Shell auf Linux und in meinem .bashrc stelle ich die Befehlszeilenschnittstelle der php.ini-Flag auto_prepend_file laden meine Befehlszeile Bootstrap-Datei zu machen (diese Datei sollte irgendwo in Ihrem php_include_path gefunden):
alias phpcl='php -d auto_prepend_file="system/bootstrap/command_line.php"'
Dies bedeutet, dass bei jedem Aufruf von der Befehlszeile diese Datei ausgeführt wird, bevor das von Ihnen aufgerufene Skript ausgeführt wird. auto_prepend_file ist eine großartige Möglichkeit, Ihr System zu starten, ich benutze es in meiner Standard-php.ini, um meine letzten Ausnahmen und Fehlerbehandlungsroutinen auf Systemebene zu setzen. Die Einstellung dieser Befehlszeile auto_prepend_file überschreibt meine normale Einstellung und ich wähle nur Befehlszeilenargumente, so dass ich $ _GET oder $ _POST setzen kann. Hier ist die Datei, die ich voranstellen:
<?php
// Parse the variables given to a command line script as Query Strings of JSON.
// Variables can be passed as separate arguments or as part of a query string:
// _GET='{ "key1": "val1", "key2": "val2" }' foo='"bar"'
// OR
// _GET='{ "key1": "val1", "key2": "val2" }'\&foo='"bar"'
if ($argc > 1)
{
$parsedArgs = array();
for ($i = 1; $i < $argc; $i++)
{
parse_str($argv[$i], $parsedArgs[$i]);
}
foreach ($parsedArgs as $arg)
{
foreach ($arg as $key => $val)
{
// Set the global variable of name $key to the json decoded value.
$$key = json_decode($val, true);
}
}
unset($parsedArgs);
}
?>
Es Schleifen durch alle Argumente übergeben und setzt globale Variablen variable variables (beachten Sie die $$). Die Handbuchseite sagt zwar, dass Variablenvariablen nicht mit Superglobalen funktionieren, aber es scheint für mich mit $ _GET zu funktionieren (ich vermute, dass es auch mit POST funktioniert). Ich übertrage die Werte als JSON. Der Rückgabewert von json_decode ist bei einem Fehler NULL. Sie sollten eine Fehlerüberprüfung bei der Dekodierung durchführen, wenn Sie sie benötigen.
Es ist 'unserialize()' nicht 'deserialize()' –
@ dev-null-dweller, danke - geändert. –
unserialize() ist unsicher und sollte daher nicht empfohlen werden. –