PHP CLI的argv是一个非常重要的变量,它可以让PHP程序在命令行下接收参数并进行相应的操作。我们可以借助这个变量实现很多实用的功能,下面就让我们一起来了解一下。
首先,我们需要明确一下什么是命令行参数。在命令行下执行程序时,我们可以在程序名后面加上多个参数,这些参数可以用来指定程序的行为、输入、输出等信息。比如在Linux下执行“ls -l”命令,这里的“ls”就是程序名,而“-l”就是参数。同样的,在PHP中也可以通过命令行传递参数,这个过程就是通过argv来实现的。
下面是一个简单的例子,假设我们有一个test.php文件,代码如下:
我们可以在命令行下执行以下命令:
$ php test.php John
这时程序会输出:
Hello John!
这里的$argv[1]就是接收到的第一个参数,也就是“John”。当然,如果你不传递参数,程序也会提示你输入名字。
事实上,$argv是一个全局变量,它会自动包含所有传递给程序的参数,这些参数被存储在一个数组里。也就是说,如果我们在命令行下执行以下命令:
$ php test.php John Smith
$argv的值就会是一个包含3个元素的数组,分别是“test.php”、“John”和“Smith”。
接下来,我们可以借助$argv完成一些更加复杂的操作。比如我们可以通过传递参数指定程序的配置信息,或者通过参数来指定输入、输出文件等等。下面是一个具体的例子:
1) { switch($argv[1]) { case '-v': echo 'Version 1.0.0'; break; case '-c': $config_file = isset($argv[2]) ? $argv[2] : '/etc/php.ini'; $config = parse_ini_file($config_file, true); print_r($config); break; case '-i': $input_file = isset($argv[2]) ? $argv[2] : 'input.txt'; $output_file = isset($argv[3]) ? $argv[3] : 'output.txt'; $input = file_get_contents($input_file); file_put_contents($output_file, strtoupper($input)); break; default: echo 'Unknown option'; } } else { echo 'Usage: php test.php [-v|-c [config_file]|-i [input_file] [output_file]]'; } ?>
在这个例子中,我们通过传递参数来指定程序的行为。如果执行以下命令:
$ php test.php -v
程序会输出当前版本号。
如果执行以下命令:
$ php test.php -c myconfig.ini
程序会读取并输出myconfig.ini文件中的所有配置信息。
还有如果执行以下命令:
$ php test.php -i input.txt output.txt
程序会读取input.txt文件中的内容,并把它转换成大写后写入output.txt文件中。
总之,$argv是一个很实用的变量,它可以让命令行下的PHP程序变得更加灵活和强大。相信你在实际的项目开发中也会经常用到。