規約その2 コントローラ編
おはようございます。ゆうきんです。
前回MVCパターンの説明?が終わったので、ようやく規約の説明に移ります。
今回はコントローラの規約をまとめます。
ちなみに、コントローラはPHPで記述し、クラスを作成します。
なお、サイトにアクセスするためのURLは、コントローラのフォルダ構成とメソッド名から決められます。
http://ドメイン/インストールフォルダ名/コントローラ名/メソッド名/パラメータ という具合です。
私の環境だと http://localhost/fuelphp/sample/index という感じになります。
コントローラの規約
- fuel/app/classes/controller にファイルを作成
- クラス名の先頭には必ず Controller_ を付ける
- クラス名(Controller_の後)の頭文字は大文字で他は全て小文字
- ファイル名とクラス名は同じにしなければならない(ファイル名がsample.php だった場合、クラス名はController_Sample となる)
- クラス名中の _ (アンダーバー) はフォルダを表すので注意(Controller_Top_Loginだとclasses/controller/top/login.php ということになる)
- Controllerクラスを継承する
- コントローラ/メソッド[/パラメータ1[パラメータ2[/…]]]でアクセス出来る(これがサイトのURLとなる)
- ブラウザ側から実行されメソッドは action_ を付ける
- コントローラ内でechoを使い出力するのはFuelPHPの規約から外れる(デバッグでは使用OK)
コントローラからの返り値について
- 文字列にキャストできるものしか返してはいけない(Responseオブジェクトで、Viewオブジェクト、文字列 など)
コントローラの特殊なメソッド
- action_index() URLでメソッド名が省略された場合に実行される
- before() アクションメソッドの実行前に自動実行される
- after() アクションメソッドの実行後に自動実行される
- roter() 内部ルーティングを上書き。アクションインデックスが受け取るはずだった引数を受け取り、実行する関数を切り替えることが出来る
Restコントローラ
- 規約にしたがって値を受けおり、サポートしているフォーマットを返す
- Controller_Restクラスを継承する
- 実行されるメソッドにはHTTPメソッドの接頭辞を付ける
- URLのメソッド名に出力フォーマット名の拡張子を付ける
- サポートフォーマット xml, json, jsonp, csv, php(eval()可能なコード), serialized
主にこんなところです。多いなぁと思うかも知れませんが、そんなことないです。
他のフレームワークに比べたら大分少ないですし、融通が聞きます。
ピンと来ない方のために簡単なサンプルソースを載せておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?php /** * サンプルクラス * クラス名はController_ + 頭文字大文字 * Controller クラスを継承している */ class Controller_Sample extends Controller { /** * beforeメソッド */ public function before() { // アクションメソッドの実行前に自動実行 } /** * アクションインデックスメソッド */ public function action_index() { // URLのメソッド名を省略した時に実行される // URLは ドメイン/sample/index or ドメイン/sample になる } /** * 自作アクションメソッド */ public function action_top() { // URLは ドメイン/sample/top になる } /** * afterメソッド */ public function after() { // アクションメソッドの実行後に自動実行 } } |
こんな感じです。今回は規約だけを伝えるために、極限まで削りました。
実際のサイトを考慮した書き方はまた今度書きます。
コントラーラにはTemplateコントローラとHybridコントローラというものがあるんですが、またの機会に書きます。
では、おやすみなさい。