きまブログ

2022-12から再開しました。

FuelPHPで勉強するMVC - Controller編

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


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

MVCのC - FuelPHPのController (コントローラー)編

よくある説明 - Controller

/fuel/app/classes/controller/aaaa.php というファイルに、

class Controller_Aaaa extends Controller
{
  public function action_bbbb()
  {
    ...
  }
}

みたいな形でクラスを書く。


これは、Controllerクラスを継承して Controller_Aaaa っていうクラスを作る。
ということ。


こうやって書いておくと、
http : // localhost /aaaa/bbbb へアクセスした時に、
Controller_Aaaaクラスがnewされ、action_bbbb()メソッドが実行されるようになる。

実際にやってみた - Controller編

上のようにクラスを書いても、最初は動きませんでした。。
調べてみると。。


このURLとクラス/メソッドの繋ぎ。というのは、
Apache2の rewriteモジュールの助けも借りて実現されているようです。
このモジュールを入れておかないと、ただ規約どおりクラスを書いても動作しません。

  1. インストール編では、あたかもスムーズにやってますが、実際、これをやってませんでしたw


つまり、コントローラーとは、

ブラウザからアクセスしたURLを(Apache2のrewriteモジュールも使って)、
クラスおよびメソッドに繋げてくれる機能。

と言えるようです。

  1. Welcomeページが動いたのは、/fuel/config/routes.phpファイルに
    静的にルーティングが書かれていたからのようです。(たぶん。。)


すると、
ブラウザからの"入り口"である「コントローラーのクラス」へ、
他の処理も、まるごと全部書いちゃえばいいんじゃない?と思えてきます。
そうすれば、既存のヤツもそのまま移植できそう。。


たぶん、それでも動くと思いますが、
これでは、MVCのC(コントローラー)のみ使用する。ということです。

サンプル - Controller編

とてつもなくシンプルですが、Controller Aaaaに
 データ処理:dateコマンドで日時を変数へ保存 (実践的にはDBへアクセスするなど。。)
 情報表示 :変数を表示 (実践的にはHTMLを構成する。。)
を全部詰め込んだサンプルです。
(以降、ViewとModelの回でこれを分割していきますw)

~/test_app/fuel/app/classes/controller$ cat aaaa.php 
<?php
class Controller_Aaaa extends Controller
{
  public function action_bbbb()
  {
  $date_time = date('Y-m-d\TH:i:s',time())." - by action_bbbb() method";

  print($date_time);
  }

  public function action_index()
  {
    print("action_index() method");
  }
}
?>

この状態で、
https : // localhost/aaaa/bbbb へアクセスすると、action_bbbb()が実行され、

2014-10-29T19:22:46 - by action_bbbb() method

https : // localhost/aaaa/ へアクセスすると、デフォルトの action_index()が実行され、

action_index() method

と表示されます。

メモ - Contoller編
  1. oilコマンドで、コントローラーを自動生成すると、Contoroller_Templeteが継承されるみたい。


では、次は、MVCのV(ビュー)を使ってみます。