FuelPHPでMVCについて調べつつ簡単に実装してみる

■ 目次

  1. 概要
  2. FuelPHPとは
  3. インストール
  4. MVCとは
  5. ファイル構成
  6. Web画面が表示されるまでを追う
  7. 参考

■ 概要

FuelPHPに触る機会があったのでMVCについて調べつつ
簡単に触ってみる

この記事ではFuelPHPやMVCについてイメージがわかればいいなと思っています

■ FuelPHPについて

FuelPHPとはPHP製のWebアプリケーションフレームワークです

フレームワークは他にも多数存在する
どれがどう良いのかや、処理速度比較などは他のサイトを参考にしてください

  • CakePHP
  • CodeIgniter
  • Zend Framework
  • Symfony
  • Kohana
  • Yii

特徴 (ネットで検索してヒットしたものを抜粋)

  • PHP5.3以上を対象にしているので昔のバージョンを切り捨てているので無駄が少ない
  • CodeIgniterに関わった人たちが2010年に開発が開始された
  • 噂では高速で軽量とか
  • 他のフレームワークに比べて規約が少ないとか
  • MITライセンスなので自由に再利用することができる

■ インストール

$ curl get.fuelphp.com/oil | sh

$ oil create 'プロジェクト名'

// 今回はブログもどきを作成する
$ oil create blog
$ sudo mv blog /var/www/html/

http://{server name}/blog/public/index.php/welcome/index
http://{server name}/blog/public/index.php/welcome/hello
にアクセスするとFuelPHPの画面が見れる
fuel01

■ MVCとは

概要図
mvc02

※ 上記の図では例としてModelはデータベースからデータを引いていますがもちろんデータベース以外からもデータをひくことがあります

MVCはM(Model)・V(View)・C(Controller)の略です
Modelがデータ取得などデータを扱ってViewが表示部分を担当します
ControllerがModelとViewの架け橋となって処理を行います

メリットとしては「機能分離」と「再利用性」があります

機能分離
機能毎の分離が明確になるのでそれぞれの機能を独立して考えて開発することができる
得意分野の実装に集中ができる

再利用性
コンポーネント間の依存が最小限に抑えられているので他の部分の影響を受けにくい
コンポーネントを再利用できる

■ ファイル構成

$ cd /var/www/html/
$ sudo yum install tree
$ tree
.
├── blog
│  ├── composer.json // Composerが必要とするファイル
│  ├── composer.lock // Composerが必要とするファイル
│  ├── composer.phar // Composerが必要とするファイル
│  ├── docs // ドキュメント
│  ├── fuel // FuelPHPのプログラムやファイル群
│  │  ├── app // アプリケーションディレクトリ
│  │  │  ├── bootstrap.php
│  │  │  ├── cache // キャッシュディレクトリ
│  │  │  ├── classes
│  │  │  │  ├── controller // コントローラ
│  │  │  │  ├── model      // モデル
│  │  │  │  └── presenter  // プレゼンター
│  │  │  ├── config // 各種設定ファイル
│  │  │   ...
│  │  │  └── views  // ビューファイル
│  │  ...
│  │  └── core // FuelPHPの標準機能が格納されているコアクラス
│  ├── oil // oilコマンド
│   ...
│  └── public // Webサーバの公開プログラムやファイル群
└── index.html

■ Web画面が表示されるまでを追う

URLについて

URLやclass名、メソッド名には規則性がある
http://{server name}/blog/public/index.php/welcome/index
このURLでアクセスを行った場合、Apacheは/blog/public/index.phpを呼び出し、welcome/indexがパラメータとしてわたされる
「/」で区切られた最初のパラメータである「welcome」を元に、welcomeコントローラー(Controller_Welcome)が呼び出される
ファイル的にはblog/fuel/app/classes/controller/welcome.phpでこの中のindexメソッド(action_index)が呼ばれることになる

Controller

// サンプル内ではモデルは使われていないみたい
// welcome/indexのViewを呼び出している
$ vim blog/fuel/app/classes/controller/welcome.php
        public function action_index()
        {
                return Response::forge(View::forge('welcome/index'));
        }

View

ビューファイルはblog/fuel/app/views/以下に格納されている
コントローラーからwelcome/indexが呼び出されたので
blog/fuel/app/views/welcome/index.phpのビューが使われることに成る
コントローラーでビューを呼び出す際に変数を与えることができて、ビューでその変数を使うことも可能である

Model

サンプルではモデルが使われていないので試しにモデルの追加方法を記述する
モデル – 概要 – FuelPHP ドキュメント
モデルファイルを作成

// 本当はDBからデータを取得するなどデータを扱い処理を記述するが
// テストなのでhello worldの文字列を返すだけにする
$ cat blog/fuel/app/classes/model/welcome.php
<?php
namespace Model;

class Welcome extends \Model {
	public static function get_hello()
	{
		return 'hello world';
	}
}

コントローラーから呼び出す

$ cat blog/fuel/app/classes/controller/welcome.php
...
	public function action_index()
	{
		// モデルから文字列を受け取ってvar_dumpで無理矢理画面に表示させる
		$test = Welcome::get_hello();
		var_dump($test);
		return Response::forge(View::forge('welcome/index'));
	}
...

画面を表示させると一番上に…./welcome.php:35:string ‘hello world’
とひっそり表示されていることを確認できる
fuel02

■ 参考


Be First to Comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です