プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
FuelPHP1.6、レストコントローラ(Controller_Rest)について理解する
FuelPHPではコントローラを作成する際の継承元に「Controller」「Controller_Template」「Controller_Rest」「Controller_Hybrid」が選べるのだそうな。

今回は「Controller_Rest」を見ていこうと思います。

まずは駄目元で使ってみますかね。

よいしょっと。
■app/classes/controller/hoger.php
<?php
class Controller_Hoger extends Controller_Rest
{
    public function action_index()
    {
        print "action_index";
    }
}

画面表示した結果φ(--)

action_index

あれ?普通に表示されちゃった。

これは理論から入った方が良さそうですな。
早速調べてみましょう。

ふむふむ(--)

1.GETとPOST(後はPUTとDELETEも)で呼び出すメソッドを変更できる
 「get_hoge」「post_hoge」のようにメソッド名のプレフィックスで切り分ける

2.拡張子の指定によって返却する情報の形式を指定できる
 「hoge.csv」「hoge.xml」のようにURL指定の拡張子で切り分ける

って理解でOKですかね(--?

例えばこんなコントローラを記述したとしてφ(--)

■app/classes/controller/hoger.php
<?php
class Controller_Hoger extends Controller_Rest
{
    public function action_index()
    {
        print "action_index";
    }

    public function get_hoge()
    {
        print "get_hoge";
    }

    public function post_hoge()
    {
        print "post_hoge";
    }
}

普通に

http://localhost/fuelphp-1.6/public/hoger/hoge/

のようにアクセスすると、

get_hoge

のような結果になります。
「function get_hoge()」が実行されたのですね。

例えば

<html>
<head></head>
<body>
    <form method="post" action="http://localhost/fuelphp-1.6/public/hoger/hoge/">
        <input type="submit">
    </form>
</body>
</html>

のようなHTMLファイルを作ってPOSTでアクセスすると

post_hoge

のような結果になります。
「function post_hoge()」が実行されたのですね。

これが「GETとPOST(後はPUTとDELETEも)で呼び出すメソッドを変更できる」のお話。

次は「拡張子の指定によって返却する情報の形式を指定できる」のお話です。

コントローラをこんな感じに書き換えてφ(--)

■app/classes/controller/hoger.php
<?php
class Controller_Hoger extends Controller_Rest
{
    public function action_index()
    {
        print "action_index";
    }

    public function get_hoge()
    {
        print "get_hoge";

        $this->response(
            array(
                'aaa' => array(
                    1, 2, 3
                ),
                'bbb' => array(
                    "A", "B", "C"
                )
            )
        );
    }

    public function post_hoge()
    {
        print "post_hoge";
    }
}

拡張子「.csv」をつけて

http://localhost/fuelphp-1.6/public/hoger/hoge.csv

のようにアクセスすると、

get_hoge"1","2","3"
"A","B","C"

のような結果になります。
CSV形式で出力されました。

拡張子「.xml」をつけて

http://localhost/fuelphp-1.6/public/hoger/hoge.xml

のようにアクセスすると、

get_hoge<?xml version="1.0" encoding="utf-8"?>
<xml><aaa><item>1</item><item>2</item><item>3</item></aaa><bbb><item>A</item><item>B</item><item>C</item></bbb></xml>

のような結果になります。
XML形式に整形されました。

拡張子「.json」をつけて

http://localhost/fuelphp-1.6/public/hoger/hoge.json

のようにアクセスすると、

get_hoge{"aaa":[1,2,3],"bbb":["A","B","C"]}

のような結果になります。
うむ、jsonっぽい見た目ですね。

面倒くさいのであとは省略しますが、対応している拡張子(フォーマット)は
こんな感じらしいですよφ(--)

xml:xml形式。
json:json形式
csv:カンマ区切りテキスト形式。
html:普通のHTML形式
php:phpでeval可能な形式
serialize:phpからデシリアライズ可能なPHP形式


ちなみに変数「protected $format」でフォーマットを強制指定できるようです。
こんな感じのコードを記述するとφ(--)

■app/classes/controller/hoger.php
<?php
class Controller_Hoger extends Controller_Rest
{

    protected $format = "csv";

    public function action_index()
    {
        print "action_index";
    }

    public function get_hoge()
    {
        print "get_hoge";

        $this->response(
            array(
                'aaa' => array(
                    1, 2, 3
                ),
                'bbb' => array(
                    "A", "B", "C"
                )
            )
        );
    }

    public function post_hoge()
    {
        print "post_hoge";
    }
}


アクセスするURLが

http://localhost/fuelphp-1.6/public/hoger/hoge.json

でも

http://localhost/fuelphp-1.6/public/hoger/hoge.xml

でも

中身は

get_hoge"1","2","3"
"A","B","C"

のCSV形式でした。

そんな感じ。

長くなったのでもう一度まとめると

1.GETとPOST(後はPUTとDELETEも)で呼び出すメソッドを変更できる

2.拡張子の指定によって返却する情報の形式を指定できる

特徴を持っているのがレストコントローラ(Controller_Rest)みたいです。

完了\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:FuelPHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事