在CLI上调用PHP脚本时设置$ _GET ['foo']变量

时间:2011-10-28 14:50:52

标签: php command-line-interface

在测试和开发一些脚本时,我希望能够定义某些$ _GET变量。

当通过mod_php / apache调用脚本时,将通过向网址添加?foo=bar来定义这些变量。

这有可能吗?

4 个答案:

答案 0 :(得分:4)

不,它不可能通过CLI。但是,您可以手动将值分配给$_GET变量。

或者您可以使用命令行参数并将它们分配给$_GET

$_GET['data'] = $argv; 

^^这有点可管理..

答案 1 :(得分:1)

您可以$_GET['foo'] = 'bar';进行设置。

答案 2 :(得分:0)

假设您有一些代码使用$ _GET ['foo']来做某事,那么处理它的最佳方法是将该代码提取到类/方法/函数中,然后使用特定于上下文的脚手架来收集它们来自环境的相关数据并将其传递到代码块中以完成它的工作。

因此,假设您有一个这样的内联PHP脚本:

$foo = $_GET['foo'];
// do what I need to do with $foo

然后你可以把它包装成一个函数

function doBar( $foo ) {
    // do what I need to do with $foo
}

你的内联php脚本现在是

$foo = $_GET['foo'];
doBar( $foo );

您可以通过直接设置$ foo

轻松编写CLI脚本来测试它
$foo = 'test value';
doBar( $foo );

或者通过解析CLI输入并从那里获取foo。

基本上,你的代码(传统MVC中的Model)与其环境隔离,可以通过HTTP请求,CLI脚本,单元测试等使用。

我要清楚的一件事是将自己的值分配给$ _GET和$ _POST超全局。在某种程度上给你带来问题是臭臭和捷径。

答案 3 :(得分:-1)

设置$ _GET变量的两个选项:只需要:

 <a href='www.example.com/index.php?foo=bar'>blah</a>

这会将$ _GET ['foo']设置为bar。

或者:

<form method='get' action='index.php'>

您将使用此表单发送的任何信息都可以使用$ _GET进行检索。