MVCのV - FuelPHPのView (ビュー)編
【備忘録】FuelPHPをインストールしてみる。 - きまブログ、
FuelPHPで勉強するMVC - Controller編 - きまブログ に続き、
FuelPHPを使って、
フレームワークの肝である、MVCを勉強&実践していきます。
のView編です。
書いてあることは、あくまで初心者レベルの理解ですので、あしからず。
よくある説明 - View編
コントローラーのメソッドの最後に、
return View::forge(‘cccc’, $data);
みたいに書いておくと、
$dataの連想配列へ保存した値が、cccc.phpで使えるようになるので、
cccc.phpでhtmlを書いて表示しましょう。
"::" (ダブルコロン)は、「スコープ定義演算子」というのですが、
ボクの認識は、クラスメソッドへのアクセス演算子です。。
実際にやってみた - View編
たしかに。。できますね。
これは、Viewクラスのforge()というクラスメソッドを使ってます。
つまり、ビューとは、
表示に必要なデータをまとめた配列(ここでは$data)を受け取って、
その「データをHTMLに埋め込んでいく」機能。
と、言えるようです。
すると、
Controllerから、表示部分 View が別ファイルに分離できることになります。
この段階では、こんな感じで分離できた感じ。
- Controller : アクセス系+データ処理系
- View : 表示系
サンプル - View編
変更点:
- dateコマンドの結果を $data['date_time'] という連想配列に入れたこと。
- printコマンドで表示していたのを、View::forge メソッドに置き換えたこと。
/fuel/app/classes/controller$ cat aaaa.php <?php class Controller_Aaaa extends COntroller { public function action_bbbb() { $data['date_time'] = date('Y-m-d\TH:i:s',time())." - by action_bbbb() method"; return View::forge('cccc', $data); } public function action_index() { print("action_index() method"); } } ?>
View の中では、$dataは連想配列のキーと同じ名前の変数に分解されているみたい。
Viewのファイルを入れておくパスは、なぜか「/fuel/app/views/」です。
変数を展開するだけだと悲しいので、HTMLっぽくしておきます。
見た目は変わりませんが。。
/fuel/app/views$ cat cccc.php <html> <head> <title>sample - MVC View</title> </head> <body> <?php echo $date_time; ?> </body> </html>
メモ - View編
- Controllerで、View::forge()をreturnしてるけど、これって誰にリターンしてるの?
たぶん、/public/index.phpだと思うけど。。
キーワード:rewrite, PATH_INFO, Requestクラス, Responseクラス あとで調べよう。
- ModelView(presentation) というのはまだナゾ。
- データの埋め込み方について
「データの埋め込み方(テンプレート)」には、いくつかの流派があり、
FuelPHPでは、オプションで、いくつかの流派に対応しているようです。
デフォルトだと、普通にPHPなので、結局HTMLの途中に
<?php echo $foo ?>
みたいなコトになり、ガッカリで面倒なことになりますが、
テンプレート(エンジン)を使うと、わりとスマートに書けるようになるらしい。
テンプレートには、
有名どころ:Smarty
軽量:SimpleTemplate、Twig
などがあるみたい。
これは、Viewの作成を楽にするための機能であり、MVCという「構成」とは直接関係ありません。
でも、サンプルでは必要ないですが、実践的なWebアプリを開発するとなると有用なので、
あとで勉強することにします。
では、次は、MVCのM(モデル)を使ってみます。