2011-10-28 58 views
0

當測試和開發某些腳本時,我希望能夠定義某些$ _GET變量。

當一個腳本被調用通過mod_php/apache時,這些變量將通過將?foo=bar添加到url來定義。

這可能嗎?

+0

問問自己爲什麼要在CLI程序中使用$ _GET。考慮修改你的設計。 –

+0

你完全正確。它只是在開發過程中進行調試和快速測試,這樣更容易,然後在Firefox上進行每一項更改。在生產中將使用GET;在我的開發環境中,我想要一種方法來簡單地定義一些東西。 – berkes

回答

4

不,通過CLI無法實現。但是,您可以手動將值分配給$_GET變量。

或者您可以使用命令行參數並將它們分配到$_GET

$_GET['data'] = $argv; 

^^這是一個有點便於管理..

1

您只需要做$_GET['foo'] = 'bar';來設置它。

-1

兩個選項來設置$ _GET變量:只是有類似:

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

這將設置$ _GET [ '富' ]來吧。

或者:

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

你可以以這樣的形式發送任何信息將與檢索$ _GET。

+1

這兩者都不適用於CLI。 – ceejayoz

+1

是的,發佈太快了。已經投了正確的答案。 – Dennis

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); 

而且你可以很容易地編寫一個CLI腳本來測試它,通過直接設置$ foo

$foo = 'test value'; 
doBar($foo); 

或者通過解析CLI輸入並從中獲取foo。

基本上,您的代碼,不會東西(模型在一個傳統的MVC)從其環境中分離,並且可以通過HTTP請求中使用,在一個CLI腳本,在單元測試等

一件事我會避免將自己的值分配給$ _GET和$ _POST superglobals。它很臭,也是一個捷徑,可以幫助你解決問題。