FuelPHP/Controller

FuelPHP/Controller

FuelPHP 1.7

Controller クラスファイル

コントローラーは

sample1/fuel/app/classes/controller

のディレクトリ以下に実装する。

今回 hoge controller を実装するとすると、ファイルは

sample1/fuel/app/classes/controller/hoge.php

となる。

もしクラス名が2単語からなる名前だったとすると・・・コーディング標準 - 概要 - FuelPHP ドキュメントによると、キャメルケースを使えというように取れるが、ファイル名は全部小文字にしろという規約もある。

私の場合は思考停止して単に繋ぐことにした。「hoge piyo コントローラー」は、hogepiyo.php である。ということでそんな複雑な名前つけるようなクラス作るなよと頭においておく。

Controller クラス

クラスは

class Controller_Hoge extends Controller
{
}

のように Controller_ をクラス名にくっつけて Controller クラスを継承して作る。 この場合も複数単語からなるクラス名の場合は私はくっつけてしまう。 「hoge piyo コントローラ」なら Controller_Hogepiyo である。

Action メソッド

実際にURLから呼び出されて動くメソッドを作るには

public function action_index()
{
    return Response::forge(View::forge('hoge/index'));
}

のように Actionメソッド名に action_ をつけたものを作る。

action_index は特別でAction メソッド名が省略して呼び出された時に呼び出されるメソッドとなる。

逆に action_ を付けなければ、外部から隠蔽されてURLから呼び出すことができないことになる。

method の限定

リクエストの GET のみ、リクエストの POST のみに処理を限定したい場合がある。そのようば場合、action_ の代わりに get_ , post_ を使うことで外部からのアクセスできるメソッドが限定される。

これを利用するとGETとPOSTで同名のURLで違う挙動を実装するのが容易になる。よりRESTな実装ができるということだな。

通常はURLの設計を厳密に行うと思うので action_ は使わずに全部 get_ , post_でやったほうがいいと思う。

Action メソッドの戻り値

Action メソッドの戻り値は

Response::forge(View::forge('hoge/index'));

等のメソッドで生成される、Response オブジェクトを返す必要がある。想像するにこれは表示する内容を示すものと、そのメタ情報を詰め込んだものだろう。

↑の場合はView::forgeメソッドで実際に表示する値を生成して、それを Response に乗っけている。

メタ情報をデフォルトのモノでOKならば

View::forge('hoge/index');

このようにViewでのレンダリング結果をそのまま返してもよい。

単なる文字列を返すと、単なる文字列がそのままブラウザにリターンされる。

外部からパラメータをうけとる

外部からパラメータを受け取るには簡単な方法として

public function action_piyo($aaa, $bbb, $ccc)

のようにする。

http://aaaaaa.com/hoge/piyo/111/222/333

のようなURLでアクセスするとそれが

$aaa = 111;
$bbb = 222;
$ccc = 333;

のようにマッピングされる。RESTっぽいね

でも実際問題はパラメータはそんなに簡単で少ないわけないのでいろいろこれでは機能的に不足する部分も多くなると思う

http://aaaaaa.com/hoge/piyo?aaa=111&bbb=222&ccc=333

のようなURLで来た場合に

Inputクラスから

$aaa = Input::get("aaa");
$bbb = Input::get("bbb");
$ccc = Input::get("ccc");

のように取り出すことができる。

同様にPOSTで来たメソッドは

$aaa = Input::post("aaa");
$bbb = Input::post("bbb");
$ccc = Input::post("ccc");

で取り出せる

View にパラメータを渡す

基本的には View::forge の第二引数に連想配列を渡せばよい

View::forge('hoge/index', array("hoge" => "ほげ", "piyo" => "ぴよ"));

という具合。

View側からは

<?php echo $hoge; >

な感じで使える

サブディレクトリのコントローラー

さらにサブディレクトリを切ってコントローラーを格納することもできる つまり

sample1/fuel/app/classes/controller/sub123

みたいなディレクトリにもコントローラを格納できる

今回 hoge controller を実装するとすると、ファイルは

sample1/fuel/app/classes/controller/sub123/hoge.php

となる。

これに対応して hoge.php に実装するクラス名は

class Controller_Sub123_Hoge extends Controller
{
}

となる

class Controller_Hoge extends Controller
{
    public function action_index()
    {
        return Response::forge(View::forge('hoge/index'));
    }
    public function action_piyo()
    {
        return Response::forge(ViewModel::forge('hoge/piyo'));
    }
    public function action_404()
    {
        return Response::forge(ViewModel::forge('hoge/404'), 404);
    }
}

Tag

php/fuelphp/controller.txt · 最終更新: 2017-09-27 11:15 by ore