Zend FrameworkのHTTPリクエストオブジェクト



開発から遠ざかっていたので、久々の投稿になりますが、今回は新たにZend Frameworkを使って開発することになりました。いきなりマニュアルを読むのは退屈なので、まずは、

を読み、後ほどプログラマ向けリファレンスガイドを読むことにしました。
そこで、HTTPリクエストオブジェクトでいきなり躓いたので、メモしておきます。上記の書籍によれば、HTTPリクエストオブジェクトでは、

$_GET / $_POST

は使わず、それぞれ

getQuery() / getPost()

を使うルールことになっているそうなのだが、実際に、

$request = $this->getRequest();
$foo = $request->getQuery('foo');

として、

http://www.example.com/index/index/foo/1/bar/1

にアクセスしても、データは取得できませんでした。もちろん、

http://www.example.com/index/index?foo=1&bar=1

にアクセスすれば、データは取得できます。やむを得ず、

$foo = $this->_getParam('foo');
$bar = $this->_getParam('bar');

としてひとまず無事解決しました。(ちなみに面倒だったので、Postは試していません。今回はGetのみです。ごめんなさい。)そこで、いろいろと実験してみてわかったのは、以下の通りです。

  • これはNG
  • $foo = $_GET['foo'];
  • これらはOK
  • $request = $this->getRequest();
    $foo = $request->getParam('foo');
     
    // あるいは
     
    $foo = $this->_getParam('foo');

Leave a Reply