2009-06-10 17 views

Respuesta

30

Guión:

<?php 

// number of arguments passed to the script 
var_dump($argc); 

// the arguments as an array. first argument is always the script name 
var_dump($argv); 

Comando:

$ php -f test.php foo bar baz 
int(4) 
array(4) { 
    [0]=> 
    string(8) "test.php" 
    [1]=> 
    string(3) "foo" 
    [2]=> 
    string(3) "bar" 
    [3]=> 
    string(3) "baz" 
} 

Además, eche un vistazo a using PHP from the command line.

+0

obras excelentes ... otras respuestas funcionarían también, pero esta fue la primera y hace que se vea mejor que tener una larga lista de nombres de variables y datos. – Hintswen

4

Así como el uso argc y argv según lo indicado por Ionut G. Stan, también se puede utilizar el módulo PEAR Console_Getopt que puede analizar fuera de línea de comando opciones de estilo UNIX. Consulte this article para obtener más información.

Alternativamente, hay una funcionalidad similar en Zend Framework en la clase Zend_Console_Getopt.

6

Además argv (como se ha mencionado Ionut), puede utilizar variables de entorno:

Ejem:

var = 3 php -f test.php 

En prueba.php:

$var = getenv("var"); 
5

Si desea mantener los parámetros con nombre casi como var = 3 & foo = bar (en lugar de los parámetros posicionales ofrecidos por $argv) getopt() puede ayudarle.

3

Muchas soluciones clasifican los argumentos en variables según su orden. Por ejemplo,

myfile.php 5 7 

pondrá el 5 en la primera variable y 7 en la siguiente variable.

argumentos que quería designada:

myfile.php a=1 x=8 

para que pueda utilizarlos como nombres de variables en el código PHP.

El vínculo que Ionuţ G. Stan dio a http://www.php.net/manual/en/features.commandline.php

me dio la respuesta.

sep16 en PSU edu DOT:

puede analizar fácilmente los argumentos de línea de comandos en la variable $ _GET mediante el uso de la función parse_str().

<?php 
parse_str(implode('&', array_slice($argv, 1)), $_GET); 
?> 

Se comporta exactamente como se esperaría con cgi-php.

$ php -f somefile.php a=1 b[]=2 b[]=3 

Esto fijará $ _GET [ 'a'] a '1' y $ _GET [ 'b'] a array ('2', '3').

Cuestiones relacionadas