laravel 安裝後是單模組應用,但通常情況下,我們的專案往往會有很多模組,如果按單模組去做,檔案目錄會異常龐大,不利於維護,耦合性太大。
那麼下面就詳細說一下利用最新laravel5.5如何進行分模組開發。
下載安裝Laravel5.5
- 環境要求 PHP >= 7.0.0
- 安裝教程 https://laravel.com/docs/5.5
composer安裝laravel5.5
composer create-project --prefer-dist laravel/laravel ./
建立 模組化 目錄
- 新建modules模組目錄
app
artisan
bootstrap
composer.json
composer.lock
config
database
modules
package.json
phpunit.xml
public
readme.md
resources
routes
server.php
storage
tests
vendor
webpack.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
<?php
return [
//省略之前內容
`providers` => [
//...
// 模組化的Provider
BaseProvidersBaseServiceProvider::class, //公共基本服務Provider
BackendProvidersBaseServiceProvider::class, //後臺服務Provider
FrontendProvidersBaseServiceProvider::class, //前臺基本服務Provider
],
//省略之後內容
];
新建各模組路由檔案
- base.php
- backend.php
- frontend.php
routes/
├── api.php
├── backend.php
├── base.php
├── channels.php
├── console.php
├── frontend.php
└── web.php
原始碼託管於碼雲 http://git.oschina.net/techle…