php-用于命令行或带有参数的web的相同源代码
如果您是从web调用php页面,您可以给出 ../../somepage.php?myid=1&trackno=2&anotherparam=3 然后可以使用$\u REQUEST或$\u GET检索信息 在命令行中,可以使用 $options=getopta:b:c:;获取通过参数传递的选项的步骤php-用于命令行或带有参数的web的相同源代码,php,arguments,Php,Arguments,如果您是从web调用php页面,您可以给出 ../../somepage.php?myid=1&trackno=2&anotherparam=3 然后可以使用$\u REQUEST或$\u GET检索信息 在命令行中,可以使用 $options=getopta:b:c:;获取通过参数传递的选项的步骤 如何确保在web或命令行中使用相同的源代码?假设您的请求如下 网站:http://domain.com/somepage.php?myid=1&trackno=2&anotherparam=3 CL
如何确保在web或命令行中使用相同的源代码?假设您的请求如下 网站:http://domain.com/somepage.php?myid=1&trackno=2&anotherparam=3 CLI:php/path/to/this/php/file/somepage.php 1 2 3 您可以使用以下php代码
<?php
if (!empty($_REQUEST)) {
$myid = $_REQUEST["myid"];
$trackno = $_REQUEST["trackno"];
$anotherparam = $_REQUEST["anotherparam"];
} else if (!empty($argv)) {
$myid = $argv[1];
$trackno = $argv[2];
$anotherparam = $argv[3];
} else {
die("Invalid request!");
}
您可以使用以下方法来处理此问题:
foreach ($argv as $k => $v) {
if ($k == 0) continue;
$temp = explode("_", $v);
${$temp[0]} = $temp[1];
}
简单地说
myid_3变成$myid=3
变量名隐藏在值中,因此您无需了解序列CLI参数和HTTP参数只是不同而已。因此,您需要自己处理这个问题,包括一个参数解析器,该解析器首先决定它在什么环境下运行,然后进行相应的解析,最后以相同的方式使参数可用。这样,您就不必在主脚本中费心了。有没有一种方法可以像处理web界面一样处理命令行参数?要确保参数已命名。。因为我可能会更改序列或有时丢失一些。@Joel您可以在参数传递时使用命名约定。查看我的最新答案
foreach ($argv as $k => $v) {
if ($k == 0) continue;
$temp = explode("_", $v);
${$temp[0]} = $temp[1];
}