Zend-Framework と PHP-Unit を使用しています。
マイセットアップ
私はhtmlフォームを持っています:
<form method="post" action="/my-module/my-controller/do">
<input type="text" name="var" value="my value" />
<input type="submit" value="sumit" />
</form>
これは同等の単体テストです。
public function test_myForm ()
{
$this->request->setMethod('POST')->setPost(array(
'var' => 'my value'
));
$this->dispatch('/my-module/my-controller/do');
}
コントローラーのアクションは次のようになります (テスト用)。
public function doAction ()
{
print_r($_POST);
echo "\n -------------------- \n";
print_r(file_get_contents('php://input'));
echo "\n -------------------- \n";
die;
}
結果
ブラウザでフォームを送信すると、次の結果が得られます。
Array ( [var] => my value )
--------------------
var=my+value
--------------------
ただし、単体テストを実行すると、次の出力が得られます。
Array ( [var] => my value )
--------------------
--------------------
私の質問
コード「file_get_contents('php://input')」は、理由がわからない空の文字列を返します。
私が取り組んでいるアプリケーションでは、$_POST を使用するだけでなく、この "file_get_contents('php://input')" のように投稿データを読み取ることが重要です。
なぜこれが起こるのか、そしてそれを解決する方法を知っている人はいますか?