arx*_*oft 4 php command-line-interface
有什么方法可以将参数(如 URL 中的查询字符串或 URL 参数)传递给通过 CLI 运行的 PHP 文件?对于一些需要从参数输入的 PHP cron 作业,我需要这个。例如:
$ php /home/abc/www/myphp.php?param1=abc
Run Code Online (Sandbox Code Playgroud)
每个命令行界面argc和argv.
argv - 传递给脚本的参数数组。
argc - 传递给脚本的命令行参数的数量(如果在命令行上运行)。
制作脚本 cli.php
<?php
print_r($_SERVER['argv']);
Run Code Online (Sandbox Code Playgroud)
并用参数调用它:
$ php cli.php argument1=1
Run Code Online (Sandbox Code Playgroud)
您应该得到如下所示的输出:
Array
(
[0] => cli.php
[1] => argument1=1
)
Run Code Online (Sandbox Code Playgroud)
来源:http : //www.php.net/manual/en/reserved.variables.server.php
如果您仍然要求有一个单点条目并且能够像 $_GET 那样处理 url 查询,那么通过添加一个开关让您的脚本像一个路由器:
if (PHP_SAPI === 'cli')
{
// ... BUILD $_GET array from argv[0]
}
Run Code Online (Sandbox Code Playgroud)
但是 - 它违反了 SRP - 单一职责原则!考虑到这一点,如果您仍然要求像您在问题中所说的那样工作,您可以这样做:
if (PHP_SAPI === 'cli')
{
/** ... BUILD from argv[0], by parsing the query string, a new array and
* name it $data or at will
*/
}
else
{
// ... BUILD new $data array from $_GET array
}
Run Code Online (Sandbox Code Playgroud)
之后将代码转换为使用 $data 数组而不是 $_GET
...祝你有愉快的一天!