HMVCã¨ã¯ã€ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«åŒ–ã—ã¦MVCè¦ç´ ã®ã‚°ãƒ«ãƒ¼ãƒ—を独立ã•ã›ã‚‹æ–¹æ³•ã€‚
複数ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’作るã“ã¨ãŒã§ãã‚‹ãŸã‚ã€å¤§è¦æ¨¡ãªé–‹ç™ºã§ã‚‚管ç†ã—ã‚„ã™ããªã‚Šã¾ã™ã€‚
コントãƒãƒ¼ãƒ©ãƒã‚¸ãƒƒã‚¯ã®å†åˆ©ç”¨ã«ã‚‚優れã¦ãŠã‚Šã€ç§ã¯ã‚ˆãã“れを用ã„ã¦é–‹ç™ºã‚’è¡Œã„ã¾ã™ã€‚
└─ app
├── classes
│ ├── controller
│ ├── model
│ └── view
└── views
通常ã®MVCã§ã™ã。
FuelPHPã§ã¯ã€classes/viewã®ä¸ã«ãƒ“ューモデルファイルを置ãã“ã¨ãŒã§ãã‚‹ã®ã‚‚é…力的。
└─ 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
app/config/config.php ファイルã§modules_pathã‚’è¨å®šã—ã¾ã™ã€‚
'module_paths' => array(
APPPATH.'modules'.DS
),
åå‰è¡çªã‚’é¿ã‘ã‚‹ãŸã‚ã«ã€modules内ã®ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ãƒ¼ï¼ˆãƒ¢ãƒ‡ãƒ«ï¼‰ã«namespaceを記述ã—ã¾ã™ã€‚
åå‰ç©ºé–“ã¯ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ãƒ•ã‚©ãƒ«ãƒ€åã¨åŒä¸€ã¨ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
namespace Admin;
class Controller_Index
{
modules内ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ã‚¯ãƒ©ã‚¹ã‚’使用ã™ã‚‹å ´åˆã€¥ã‚’å…ˆé ã«ã¤ã‘ã¾ã™ã€‚
//$name = Input::get('name');
$name = \Input::get('name');