読者です 読者をやめる 読者になる 読者になる

きまブログ

5/31 はてなダイアリーから移行しました。


FuelPHPで勉強するMVC - Model編

MVCのM - FuelPHPのModel(モデル)編

【備忘録】FuelPHPをインストールしてみる。 - きまブログ
FuelPHPで勉強するMVC - Controller編 - きまブログ
FuelPHPで勉強するMVC - View編 - きまブログに続き、
FuelPHPを使って、
フレームワークの肝である、MVCを勉強&実践していきます。
のModel編です。


書いてあることは、あくまで初心者レベルの理解ですので、あしからず。

よくある説明 - Model編

モデルで、実際のデータ処理をやるから、
コントローラーとかビューでやるな。

実際にやってみた - Model編

モデルというと、とかくデータベースとのアクセスだけが解説されてますが、
それは「ウェブアプリって、MySQLからデータ取ってきて表示するもんでしょ。」
ということだからなのでしょう。


でも、今回は「FuelPHPの動作からMVCを学習する。」が主眼で、
データベースが主眼ではないので、いままでのサンプルと同じ処理をして、
それをコントローラーへ返すようにします。


すると、
Controllerから、データを処理する部分も分離することができます。


これで、MVCを分離することが出来ました。教科書的ですね。。
- Controller : アクセス系
- View : 表示系
- Model : データ処理系

サンプル

Controllerは、dateコマンドの実行をModel_dddd::eeee()メソッドへ変更。
action_index()は削除しました。

/fuel/app/classes/controller$ cat aaaa.php 
<?php

class Controller_Aaaa extends COntroller
{
  public function action_bbbb()
  {
  $data = Model_dddd::eeee();

  return View::forge('cccc', $data);
  }
}

?>

Modelでdateコマンドで$data連想配列へ保存。
(コード貼り付けた時に気がついたけど)と、
クラス名は、Model_Ddddじゃなくてもいいのか?
最初の文字は大文字じゃなくても動いてる。。だけど。。不明。。

/fuel/app/classes/model$ cat dddd.php 
<?php

class Model_dddd extends Model
{
  public static function eeee()
  {
    $data['date_time'] = date('Y-m-d\TH:i:s',time())." - by Model_dddd::eeee()  method";

    return $data;
  }
}

?>
メモ - Model編
  1. いままで、クラスを作るとき継承してきた、Controller, View, Model の原本は、
    /fuel/core/classes/ にありますが、実際に model.phpを見てみると空っぽ。。
  1. Model継承したクラスの命名規則に疑問を思ったので
    Controllerのクラス名も、Controller_aaaa にしてみたけど、うごくよ。。
  1. 他のサイト様のModelに関する解説だと、「名前空間」というのが頻出しますが、
    ここでは使ってません。
    これはフレームワークの機能ではなく、PHP5の機能です。


これで、フレームワークにおけるMVCとは何か?
FuelPHPでの扱い方や動きが、少しわかった気がします。
次は、これを自動コード生成だとどうなるか?ということを勉強していきます。