laravel 安装后是单模块应用,但通常情况下,我们的项目往往会有很多模块,如果按单模块去做,文件目录会异常庞大,不利于维护,耦合性太大。
那么下面就详细说一下利用最新laravel5.5如何进行分模块开发。
下载安装Laravel5.5
- 环境要求 PHP >= 7.0.0
- 安装教程
composer安装laravel5.5
composer create-project --prefer-dist laravel/laravel ./
建立 模块化 目录
- 新建modules模块目录
appartisanbootstrapcomposer.jsoncomposer.lockconfigdatabasemodulespackage.jsonphpunit.xmlpublicreadme.mdresourcesroutesserver.phpstoragetestsvendorwebpack.mix.js
-
modules的目录结构为
- Base 公共基础模块
- Backend 后台模块
- Frontend 前台模块
modules/├── Backend│ ├── Controllers│ ├── helpers.php│ ├── Middlewares│ ├── Models│ ├── Providers│ │ ├── BaseServiceProvider.php│ │ └── RouteServiceProvider.php│ └── Requests│ └── helpers.php├── Base│ ├── Controllers│ ├── helpers.php│ ├── Middlewares│ ├── Models│ ├── Providers│ │ ├── BaseServiceProvider.php│ │ └── RouteServiceProvider.php│ └── Requests└── Frontend ├── Controllers ├── helpers.php ├── Middlewares ├── Models ├── Providers │ ├── BaseServiceProvider.php │ └── RouteServiceProvider.php └── Requests
使用composer自动加载模块命名空间
- 修改composer.json 文件
{ "name": "laravel/laravel", ... "autoload": { "classmap": [ "database/seeds", "database/factories" ], "psr-4": { "App\\": "app/", "Base\\": "modules/Base/", "Backend\\": "modules/Backend/", "Frontend\\": "modules/Frontend/" }, "files": [ "modules/Base/helpers.php" ] } ...}
- 自动加载命令,在应用根目录命令行执行
composer dumpauto
-
命名空间举例
- 基础模块命名空间为 namespace Base
- 基础模块-控制器命名空间 namespace BaseControllers
- 基础模块-模型命名空间 namespace BaseModels
配置模块化服务
- 修改config/app.php
[ //... // 模块化的Provider Base\Providers\BaseServiceProvider::class, //公共基本服务Provider Backend\Providers\BaseServiceProvider::class, //后台服务Provider Frontend\Providers\BaseServiceProvider::class, //前台基本服务Provider ], //省略之后内容];
新建各模块路由文件
- base.php- backend.php- frontend.php
routes/├── api.php├── backend.php├── base.php├── channels.php├── console.php├── frontend.php└── web.php
源码托管于码云
原文链接