HMVC开发部署

一个简单的HMVC开发部署,请大湿指教仅供参看勿喷!
HMVC开发主要使用ServiceProvider实现;
第一步:在APP目录下创建一个modules文件夹
第二步:新建一个app/modules/ServiceProvider.php
<?php 
namespace App\Modules;

abstract class ServiceProvider extends \Illuminate\Support\ServiceProvider {

public function boot()
{
    if ($module = $this->getModule(func_get_args()))
    {
        $this->package('app/' . $module, $module, app_path() . '/modules/' . $module);
    }
}

public function register()
{
    if ($module = $this->getModule(func_get_args()))
    {
        $this->app['config']->package('app/' . $module, app_path() . '/modules/' . $module . '/config');

        // Add routes
        $routes = app_path() . '/modules/' . $module . '/routes.php';
        if (file_exists($routes)) require $routes;
    }
}

public function getModule($args)
{
    $module = (isset($args[0]) and is_string($args[0])) ? $args[0] : null;

    return $module;
}

}

第三步:打开composer.json找到autoload在配置中添加app/modules
"autoload": {
    "classmap": [
        ......
        "app/modules"
    ]
},

第四步:创建2个模块article、shop目录结构为MVC,模块目录必须要有一个ServiceProvider.php
来初始化模块;/app/modules/article/ServiceProvider.php
<?php 
namespace App\Modules\Article;
class ServiceProvider extends \App\Modules\ServiceProvider {

public function register()
{
    parent::register('article');
}

public function boot()
{
    parent::boot('article');
}

}

新增一个路由文件/app/modules/article/routes.php
<?php
Route::get('admin/article', function() {
return '<h1>Hello Word!</h1>
'; });

第五步:修改/app/config/app.php
'providers' => array(
             ........
    'App\Modules\Article\ServiceProvider',
    'App\Modules\Shop\ServiceProvider',

),

项目根目录执行下
composer dump-autoload 

通过浏览器访问http://localhost/admin/article就OK一个简单的HMVC部署就实现。

1 个评论

renlf

renlf

最终以实验结果为准!先抢个沙发。
2014-10-29 13:50

要回复文章请先登录注册