ITエンジニアのための勉強会・イベントレポート情報メディア

とりあえずやってみる!FuelPHP 第6回FuelPHPのMVC
skill

とりあえずやってみる!FuelPHP 第6回FuelPHPのMVC

2018.02.22

 
  • このエントリーをはてなブックマークに追加

前回はMVCのVとCの関係までをみました。ビューとコントローラですね。今回は、Mも含めてFuelPHPのMVCについて説明したいと思います。
とはいえ、M、つまりモデルの実際の動きをみようと思うとデータベースの接続の話も絡んできてしまいますので、いまは関係性だけを知っていただきたいと思います。動きはまた別のときにご紹介しますね。

えとうさちこ

HFuelPHPのMVC

前回、Hello World!を表示する2つめの方法としてコントローラとビューを使ったやり方をご紹介しました。そこにモデルを追加すると、おおまかですが以下のような処理フローになります。

図1

  • ①コントローラはブラウザからのリクエストを受け取ります。
  • ②コントローラはモデルを呼び出します。
  • ③コントローラはモデルが処理した結果を受け取ります。
  • ④コントローラは受け取ったデータをビューに渡します(呼び出し)。
  • ⑤コントローラはビューから結果を受け取ります。
  • ⑥コントローラはブラウザにビューファイルの内容を返します。

MVCのそれぞれの役割をざっくり見てみましょう。

・コントローラ
処理フローの主語はすべてコントローラになっています。モデルやビューとの連携など、コントローラがアプリーション全体を制御しているからです。

・ビュー
処理結果の表示など画面表示を担当しています。

・モデル
データベースへのアクセス、データの修正や加工などデータの管理を担当しています。データベースに限らず、ファイルや、ほかの外部システム、たとえばメールの送信やWeb APIからデータを取得するような操作も担当します。

それぞれの役割に合ったコードをそれぞれの部分に記載することで、きれいで保守しやすいコードになります。
前回Hello World!を表示する1つめの方法では、コントローラだけで表示させました。つまりFuelPHPはコントローラだけでも動作します。どこに書けばよいかわからなくなったら、とりあえずコントローラに記述すれば動作してしまうので、コントローラは肥大化しやすい部分でもあります。
しかし、なんでもかんでもコントローラに突っ込んでいるとコードは汚くなり、保守しづらいものになってしまいます。コントローラが肥大化している場合は、他の場所に記述を移せないか考えてみるといいと思います。

コントローラの規約で押さえておきたいポイント

  • ・APPPATH/classes/controller フォルダ配下に配置する。
  • ・ファイル名=コントローラ名、ファイル名はすべて小文字にする。
  • ・クラス名には接頭辞「Controller_」を付ける。
  • ・クラス名の単語は最初の文字が大文字、そのほかは小文字にする。
  • ・クラス名のなかではフォルダ区切りを「_」とする。 例)ファイルが「APPPATH/classes/controller/admin/profile.php」の場合、クラス名は「Controller_Admin_Profile」となります。
  • ・Controllerクラスを継承する。
  • ・ブラウザから実行されるメソッド名には接頭辞「action_」を付ける。

ビューの規約で押さえておきたいポイント

  • ・APPPATH/views フォルダ配下に配置する。
  • ・ファイル名はすべて小文字にする。

モデルの規約で押さえておきたいポイント

  • ・APPPATH/classes/model フォルダ配下に配置する。
  • ・ファイル名=モデル名、ファイル名はすべて小文字にする。
  • ・クラス名には接頭辞「Model_」を付ける。
  • ・クラス名の単語は最初の文字が大文字、そのほかは小文字にする。
  • ・クラス名のなかではフォルダ区切りを「_」とする。
  • ・Modelクラスを継承する。

現在、多くのフレームワークでMVCモデルが採用されています。MVCモデルをご存じの方には、すでに知っている話ばかりだったかもしれませんが、実はFuelPHPでは単純なMVCモデルが拡張され、ご紹介したモデル(M)、ビュー(V)、コントローラ(C)以外に、プレゼンタというものがあります(FuelPHP1.7.1以前ではビューモデルと呼ばれていたそうです)。このプレゼンタには、表示のために必要な関数をビューに渡したり、表示のためにデータを加工したりする役割があります。
FuelPHPのMVCに慣れてきて、コントローラが長くなりすぎたなと感じたらプレゼンタも使用してみるといいと思います。

原稿: えとうさちこ
SEとしてJavaでのASP開発を経て、現在は主にPHPでのWEBアプリ開発を行うWEBエンジニア。フロントエンドもサーバサイドも好き。インフラ勉強中。今後はRubyにも手を出すつもり。PCに向かっている以外はだいたいテニスに没頭。おかげさまで肩こり知らず。ブログやってます。
http://sachips.byeto.jp

とりあえずやってみる!FuelPHP 第6回FuelPHPのMVC

この記事はどうでしたか?

おすすめの記事

キャリアを考える

BACK TO TOP ∧

FOLLOW