Después de seguir el conjunto de instrucciones, usted puede hacer una llamada como esta:
phpcl yourscript.php _GET = '{ "key1": "val1", "clave2": "val2"}'
para conseguir este funcionamiento que necesita para ejecutar código antes del script siendo llamado. Yo uso un shell bash en Linux y en mi archivo .bashrc puedo configurar la interfaz de línea de comandos para hacer que la bandera auto_prepend_file php ini cargar mi archivo de arranque de línea de comandos (este archivo debe encontrarse en algún lugar de su php_include_path):
alias phpcl='php -d auto_prepend_file="system/bootstrap/command_line.php"'
Esto significa que cada llamada desde la línea de comandos ejecutará este archivo antes de ejecutar el script que usted llama. auto_prepend_file es una gran manera de arrancar tu sistema, lo uso en mi php.ini estándar para configurar mis controladores finales de excepciones y errores a nivel de sistema. Establecer esta línea de comando auto_prepend_file anula mi configuración normal y elijo solo manejar los argumentos de línea de comando para poder establecer $ _GET o $ _POST. Aquí está el archivo que he Prefijo:
<?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);
}
?>
Se recorre todos los argumentos pasados y establece las variables globales utilizando variable variables (nótese el $$). La página de manual dice que las variables variables no funcionan con superglobales, pero parece funcionar para mí con $ _GET (supongo que también funciona con POST). Elijo pasar los valores en JSON. El valor de retorno de json_decode será NULL en caso de error, debe hacer una comprobación de errores en la decodificación si la necesita.
Es 'unserialize()' not 'deserialize()' –
@ dev-null-dweller, gracias - modificado. –
unserialize() es inseguro y, por lo tanto, no debería recomendarse. –