2011-10-28 2 views
0

スクリプトをテストして開発するときに、特定の$ _GET変数を定義できます。

スクリプトがトラフmod_php/apacheと呼ばれる場合、これらの変数はURLに?foo=barを追加して定義されます。

これはまったく可能ですか?

+0

なぜCLIプログラムで$ _GETを使用しようとしているのか自問してください。デザインの改訂を検討してください。 –

+0

あなたはまったく正しいです。それは、cliが発射することにより、開発中のデバッグとクイックテストが非常に簡単になり、それぞれの変更に対してfirefoxに簡単に変更できることです。プロダクションではGETが使用されます。私の開発環境では、単純にそこにいくつかのものを定義する方法があります。 – berkes

答えて

4

いいえ、CLI経由では不可能です。ただし、値を$_GET変数に手動で割り当てることができます。

または、コマンドライン引数を使用して$_GETに割り当てることができます。

$_GET['data'] = $argv; 

それは少し扱いやすいです^^ ..

1

$_GET['foo'] = 'bar';を設定するだけで済みます。

-1

二つのオプション$ _GET変数を設定します。これは、$ _GET [ 'foo' を設定します

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

:単にような何かを持っています] バーへ。

または:あなたはこのフォームで送信されます

<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 

その後、あなたはあなたのインラインPHPスクリプトは、現在

$foo = $_GET['foo']; 
doBar($foo); 
だろう

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

機能にこれをラップすることができ

そして、$ fooを直接設定することで、これをテストするCLIスクリプトを非常に簡単に書くことができます

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

またはCLI入力を解析し、代わりにそこからのfooを取得することによって。基本的には

、(伝統的なMVCにモデル)のものをして、あなたのコードは、その環境から隔離され、ユニットテストなど

一つのことで、CLIスクリプトで、HTTPリクエストを経由して使用することができます$ _GETと$ _POSTのスーパーグローバルに独自の値を割り当てるのは間違いありません。それはあなたの問題をいくつかの方法で解決するためには臭いがあり、ショートカットです。

関連する問題