FuelPHP Modules化の手順 - HMVC

FuelPHP Modules化

HMVCとは

HMVCとは、モジュール化してMVC要素のグループを独立させる方法。
複数のモジュールを作ることができるため、大規模な開発でも管理しやすくなります。

コントローラロジックの再利用にも優れており、私はよくこれを用いて開発を行います。

基本構造


└─ app
   ├── classes
   │  ├── controller
   │  ├── model
   │  └── view
   └── views

通常のMVCですね。
FuelPHPでは、classes/viewの中にビューモデルファイルを置くことができるのも魅力的。

Modules化したときの構造


└─ app
   ├── classes
   │  ├── controller
   │  ├── model
   │  └── view
   ├── views
   └── modules
       └── admin(モジュール名:任意)
           ├── classes
           │  ├── controller
           │  └── view
           └── views

modulesディレクトリの配下には、複数のモジュールを置くことができます。

各モジュールにアクセスするためのURLは、
http://[ドメイン]/[モジュール名]/[コントローラ名]/[アクション名]
となります。

モジュールの設定

はじめに

Modules化して、コントローラー・ビューモデル・ビューを分割します。
今回はモデルは分割せず、全てのモジュールで共通のモデルを使用することにします。

モデルも分割したい場合は、コントローラー等と同様にmodulesディレクトリ以下に配置するだけです。

ディレクトリ構成

modules内に任意のディレクトリを作成し、通常のclassesやviewをコピーして配置します。


└── modules
    └── admin(モジュール名:任意)
        ├── classes
        │  ├── controller
        │  └── view
        └── views

configファイル変更

app/config/config.php ファイルでmodules_pathを設定します。


	'module_paths' => array(
		APPPATH.'modules'.DS
	),

namespaceの記述

名前衝突を避けるために、modules内のコントローラー(モデル)にnamespaceを記述します。
名前空間はモジュールフォルダ名と同一とする必要があります。


namespace Admin;
class Controller_Index
{

¥の付加

modules内のファイルからクラスを使用する場合、¥を先頭につけます。


//$name = Input::get('name');
$name = \Input::get('name');
Related

Vagrant+Docker+PHP環境で「session.save_path」指定時に、セッションファイルが空になるエラー

ファイル共有でのフォルダの所有者を設定 結論 PHP5.4.28 からセッションファイルのownerはrootもしくはWebサーバのユーザに限るという制限が...

LINEと連携したテイクアウト事前注文システム徹底比較!

目次 テイクアウト予約・注文受付システムのトレンド LINEと連携したテイクアウト事前注文システムの価格表 L.B.B.Cloud テイクイーツ ...

PHPで動画の撮影日を取得

PHPで動画の撮影日を取得 概要 PHPからffprobeコマンドを実行し、動画の撮影日時を取得します。 コード $posted_at = ...

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...
トップへ戻る