Model-View-ControllerそしてViewModel [FuelPHP]

FuelPHP Advent Calendar 2011 ということで、PHP フレームワーク FuelPHP に関するブログをクリスマスまでお届けしています。

2日目のKenjiさんの記事につづきまして、3日目を書かせていただきます!

FuelPHPは、MVC構造のPHPフレームワークです。
http://fuelphp.com/ のDownloadをクリックすると、ソースをダウンロードできます。
今日この時点で配布されているのは、V1.1 RC1です。

MVC構造というと
Controller , Model , Viewの3つの役割にわかれていますが、
FuelPHPにはそれにもう一つ、ModelViewという考え方があります。
http://docs.fuelphp.com/general/mvc.htmlより….

ViewModels

Once your application gets more complex you’ll discover that it gets hard to decide if a piece of logic really belongs in the Controller, what if it is very specifically about the View and has little to do with your application logic? This is where ViewModels come in; they are the glue between your controllers and your views.

Controllerファイルを作って、コード書いてると、なんだか複雑な事になってるなぁって思うんだよね。健全じゃないっていうかさ…..
うまく言えないけども、それって本来Controllerの仕事にしたままでいいのかな?…..ってね。

Viewの為だけに、データ調整したりとか、生成したりとか…..
それって本当にControllerの役割だったっけ?
仕事させすぎて、テンパってるのよく見かけるじゃん。わかりやすくしてやらないと、Controllerのかっこよさ半減だよね。

viewとControllerの間に、かわいい奴がいればハッピーな事にならないかな? Controllerもかっこ良くなるし、viewも無理しなくて良くなるしさ….

みんな幸せになれるじゃんね?

よーし、作っちゃえ☆
(訳ではありません…..)

そんな感じで、ViewModelの使い方はここに書かれています。
http://docs.fuelphp.com/general/viewmodels.html
そこにも、ViewModelってどんな奴よ?ということが書かれています。

What is a ViewModel?

A ViewModel is a class that contains the logic that is needed to generate your views. When the controller is done with your user input and is done with whatever actions it needed to take, it turns execution over to the ViewModel to retrieve whatever data is needed for the view. A ViewModel shouldn’t do any data manipulation, but can contain Database calls and any other retrieval or preparation operations needed to generate the View’s data.

ViewModelって奴はさ、Viewが魅力的な姿になるために、いろんな準備をしてくれるかわいい奴なんだよ。

まずはControllerが指示するじゃんね? あれ出しとけ、これ出しとけ、それも見せとけって言うんだよね。
そうしたらviewはそれを魅せる仕事をするんだけど、
その材料になる情報を、viewmodelのやつが確認したり、下準備したりしてさ、viewに渡すんだよ。
viewはそれを受け取って、その魅力を最大限に引き出す努力をするんだよ。

Controllerの奴もViewの奴も無理しなくなった分、綺麗になったし魅力的だよな。
(訳ではありません…..)

過去の自分のコードの姿を見返すと…..
viewがかなり頑張ってる姿が見えました。
viewが直接model呼び出してるし、データの体裁を整えたりと、
viewの中が、データ層、表示層に別れているような感じになっちゃったりとか…. viewの中の人も大変だったよねぇ… (; A ; )ごめんよぅ….. と
今回は紹介までですが、次の機会には、ViewModelを実際に書いて動かしてみる事をまとめてみます。

さて、こんなステキなFuelPHPフレームワークですが、
日本語の情報はまだまだ本当に少なく、英語の苦手な私にはそこがちょっとだけが苦しい….. ということで日本語化作業をgithubはじめています。
https://github.com/NEKOGET/FuelPHP_docs_jp
コミットしている内容を次のURLで見えるようにしています。
http://press.nekoget.com/fuelphp_doc/
(仮設置なので年末時間が出来た時にでも、もう少しわかりやすい場所に移転します)

下手な日本語訳を後悔公開していたところ、協力くださるステキな方々がそっと手を差し伸べてくださり、日本語訳がどんどんと進んでいます。本当に嬉しいです。
また、1日目のmizuno さんが、日本語化参加の方法をわかりやすくまとめてくださいました!
http://ounziw.com/2011/12/01/github-localize/
皆様の訳文をお待ちしています☆

 

次回のブログは@fukataさんです。
お楽しみに!

FuelPHP Advent Calendar 2011は、↓こちらから参加できます。
http://atnd.org/events/22380
まだまだ参加可能です。ぜひどうぞ!

「Model-View-ControllerそしてViewModel [FuelPHP]」への1件のフィードバック

  1. ピンバック: FuelPHP Advent Calendar 2011

コメントは停止中です。