チュートリアル RestコントローラとHybridコントローラ
おはようございます。かつてゆうきんと呼ばれていたものです。
今回は、規約その2 コントローラ編で規約だけ説明したRestコントローラとHybridコントローラの説明をします。
Restコントローラについて
以前書きましたが、RestコントローラとはHTTPメソッドをサポートするものです。
主に POST や GET ですね。
習うより慣れろということで、さっそくサンプルをドン。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php class Controller_Input extends Controller_Rest { public function get_data() { $this->response( array( 'name' => 'yukin', 'age' => 24 ) ); } } |
GETメソッドだけ存在するRestコントローラサンプルです。
http://localhost/fuelphp/input/data.json にアクセスすると私の個人情報が漏洩します。ヤダ怖い。
通常のGETメソッドと同じ用に値を渡す事もできます。
例えば http://localhost/fuelphp/input/data.json?name=yukin&age=24 という具合です。
これに対応するRestコントローラは以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php class Controller_Input extends Controller_Rest { public function get_data() { $this->response( array( 'name' => Input::get('name'), 'age' => Input::get('age') ) ); } } |
アクセスした時の見た目は変わりませんが、渡された値を返すようになっています。
先ほどのURLの yukin と 24 の部分をいじってアクセスしてみて下さい。実感できるかと思います。
Restコントローラ単体ではページの表示には向きません。
主にWebサービスを作成する場合に用いることになるでしょう。
Hybridコントローラについて
PHPは多重継承が許されていません。
では、RestコントローラとTemplateコントローラを同時に使いたい場合はどうするのでしょうか?
それを解決してくれるのが、Hybridコントローラです。
RestコントローラとTemplateコントローラの特性を同時に持たせたい場合はHybridコントローラを継承するのです。
ファイルを分割することでも解決可能ですが、それだとURLもわかれてしまい、ユーザにわかりにくくなってしまう場合があります。
例えばログインページを作成するときなどはHybridコントローラを使うことになるかと思います。
anction_index で入力画面を表示 post_login でポストされたデータをチェックし、正しければログイン処理を実行する、などです。
覚えておくと非常に便利なものなので、有効活用して下さい。
では、おやすみなさい。