プログラムをコンソールから実行する時


たとえば`PHP`の処理を実行したい時、ブラウザを開いて毎回結果を確認しています。  
`$ php -f
file.php`で実行できるのは知っているのですが、getリクエストなどのパラメータが渡せないと確認できなかったりするので、結局ブラウザでの確認をしてしまいます。

また、rubyなどでも`ruby on
rails`などのウェブフレームワークになると、コントローラのアクションを指定して実行することになるので、やはりgetリクエストなどが必要になってしまいます。

皆さんはこれをどう解決しているのでしょうか?




PHPでは、以下の2つの方法が思いつきました。外部ライブラリは未使用です。  
尚、以下の適当なファイル(test.php)を用意して確認しています。

[code]

    <?php
    
    var_dump($_GET);
    
[/code]

**1.コンソールからparse_str()で$_GET等を上書きする方法**  
コンソールから次のコマンドを実行します。

[code]

    $ QUERY_STRING="xxx=yyy&zzz=aaa" php -r 'parse_str(getenv("QUERY_STRING"), $_GET); include("test.php");';
    
[/code]

結果は以下の通りです。

[code]

    array(2) {
      'xxx' =>
      string(3) "yyy"
      'zzz' =>
      string(3) "aaa"
    }
    
[/code]

参考:  
<https://stackoverflow.com/questions/3848901/how-to-pass-query-string-
parameters-to-the-php-binary>

**2. ビルトインウェブサーバーを使う方法**  
前述の"test.php"が有る場所でビルトインウェブサーバーを起動します。

[code]

    $ php -S localhost:8000
    
[/code]

何らかの方法でアクセスします。以下は適当な一つの例です。

[code]

    $ php -r "echo file_get_contents('http://localhost:8000/test.php?foo=bar&baz=qux');"
    
[/code]

この結果は以下です。

[code]

    <pre class='xdebug-var-dump' dir='ltr'>
    <b>array</b> <i>(size=2)</i>
      'foo' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'bar'</font> <i>(length=3)</i>
      'baz' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'qux'</font> <i>(length=3)</i>
    
[/code]

ビルトインウェブサーバーを起動したコンソール側には、以下のような出力がされているはずです。

[code]

    [Fri Feb  6 09:54:28 2015] ::1:51546 [200]: /test.php?foo=bar&baz=qux
    
[/code]

**3. その他**  
Goutte等の外部ライブラリを使えば、より高度な実行が可能です。  
<https://github.com/FriendsOfPHP/Goutte>

