FuelPHPで管理画面を作っていた時に、どうもファイルが散らばってきました。管理画面だけでこんなになっちゃったら、ユーザ側の画面を作り始めた時に、ファイルが散らばりすぎるんじゃないかと思って、FuelPHPの機能のmoduleを使うことにしました。
もともと普通のやり方で作っていたものだったので、ちょこっと躓いたりもしたので、それの備忘録的なメモです。ここでは、すでにある程度MVCで開発が進んでいて、それらをmoduleといてひとまとめにすることを考えます。
module機能について
moduleを使うと、
APPPATH
┗modules
┣module1
┃ ┣class
┃ ┃ ┣model
┃ ┃ ┣controller
┃ ┃ ┗view
┃ ┣config
┃ ┣lang
┃ ┗view
┃
┗module2
┣class
┃ ┣model
┃ ┣controller
┃ ┗view
┣config
┣lang
┗view
のように一つのモジュールとしてMVCをまとめることができます。ある程度機能ごとにファイルをまとめられるので、module1を開発するときはmodule1ディレクトリだけを見ればよくて、ファイルを探す手間を省けます。
さらに、本来URLが{base_url}/controller/action
となるところを
{base_url}/module/controller/action/
になり、階層が一つ増えます。
module化の方法
ファイルのコピー
まず、APPPATH直下のclass
, config
, lang
, view
の4つのディレクトリをAPPPATH/modules/module1
ディレクトリを作ってコピーします。
configにmodule_pathの設定
APPPATH/config/config.php
をいじります。ファイル内の
[code lang=php]
return array(
// 略
'module_paths' => array(
APPPATH.'modules'.DS
),
// 略
)
[/code]
の部分がコメントアウトされていると思うので、コメントを外します。
namespaceの指定
ControllerとModelに
[code lang=php]
namespace Module1
[/code]
を一行付け加えます。namespace
は最初に書かなければならないので、<?php
の直後に書いてください。
COREのクラスの呼び出し部分を変更
namespace
を指定したので、CORE
クラスを呼び出すときには必ずView
のように頭にを付けなければなりません。なので、使っている
View
, Input
, Response
などに見落としがないようにしましょう。また、親クラスにもextends
のController_Template
のようにをつけましょう。
ここまでやって、{base_url}/module/controller/action
にアクセスすれば、module
内のcontroller
のaction
が表示されると思います。エラー吐くときは多分、最後ののつけ忘れがほとんどだと思いますので、注意してくださいねー。
[…] 参考サイト http://fuelphp.jp/docs/1.7/general/modules.html http://qiita.com/inoinojp/items/30e5c61e67115ad00dd9 http://inter-arteq.com/fuelphp%E3%81%AEapp%E3%82%92%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E5%… […]