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

Published: 2016年4月17日 by tomsato

概要

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

参考

コメントを書く

※ 個別に返信が必要な時のみご記入ください

※ Emailは公開されません

※ 承認されると名前・コメントが下記に表示されます

コメント一覧

最近の投稿

ビジュアルリグレッションテストについてまとめ、ネットで調べると数多くのライブラリがありどれがどんな立ち位置なのか全体像がわかりずらかったのでどんな種類があるのか入門の入門としてまとめます、またPlaywrightを使って実際に触ってみました

社内ツールなどの超小規模なAPIをGolangで実装する際にフレームワークを使うべきかを、実際にnet/httpを使った実装とフレームワークを使った実装を比較することでどれだけ優位性があるかを見ていきたいと思います。今回はフレームワークにはシンプルで使いやすそうなEchoを使うことにします。

vue-pdfを使ってNuxt.jsで作成しているアプリケーションに pdfスライドを表示させるサンプルを作成しました README.md通りに実装してもうまくいかないところがあったのでそのあたり含めてまとめます

Vue.js / Nuxt.jsにおけるログインの実装方法をまとめる Auth0やNuxt.jsのAuth Moduleとmiddlewareについて調べつつサンプルを作成することで理解を深める

コンポーネント設計について考える Atomic DesignやPresentational Component, Container Componentについてまとめつつ 自分だったらVue.js / Nuxt.jsでどういうコンポーネント設計にするかについてまとめます

カテゴリ一覧

タグ一覧