基于Laravel5.5的模块化开发

小天天天天    PHP    999+ 次    2017-12-25 11:29:29


laravel 安装后是单模块应用,但通常情况下,我们的项目往往会有很多模块,如果按单模块去做,文件目录会异常庞大,不利于维护,耦合性太大。 那么下面就详细说一下利用最新laravel5.5如何进行分模块开发。

下载安装Laravel5.5

composer安装laravel5.5

Code:

  1. composer create-project --prefer-dist laravel/laravel ./

建立 模块化 目录

  • 新建modules模块目录

Code:

  1. app
  2. artisan
  3. bootstrap
  4. composer.json
  5. composer.lock
  6. config
  7. database
  8. modules
  9. package.json
  10. phpunit.xml
  11. public
  12. readme.md
  13. resources
  14. routes
  15. server.php
  16. storage
  17. tests
  18. vendor
  19. webpack.mix.js
  • modules的目录结构为
    • Base 公共基础模块
    • Backend 后台模块
    • Frontend 前台模块

Code:

  1. modules/
  2. ├── Backend
  3. │ ├── Controllers
  4. │ ├── helpers.php
  5. │ ├── Middlewares
  6. │ ├── Models
  7. │ ├── Providers
  8. │ │ ├── BaseServiceProvider.php
  9. │ │ └── RouteServiceProvider.php
  10. │ └── Requests
  11. │ └── helpers.php
  12. ├── Base
  13. │ ├── Controllers
  14. │ ├── helpers.php
  15. │ ├── Middlewares
  16. │ ├── Models
  17. │ ├── Providers
  18. │ │ ├── BaseServiceProvider.php
  19. │ │ └── RouteServiceProvider.php
  20. │ └── Requests
  21. └── Frontend
  22. ├── Controllers
  23. ├── helpers.php
  24. ├── Middlewares
  25. ├── Models
  26. ├── Providers
  27. │ ├── BaseServiceProvider.php
  28. │ └── RouteServiceProvider.php
  29. └── Requests

使用composer自动加载模块命名空间

  • 修改composer.json 文件

Code:

  1. {
  2. "name": "laravel/laravel",
  3. ...
  4. "autoload": {
  5. "classmap": [
  6. "database/seeds",
  7. "database/factories"
  8. ],
  9. "psr-4": {
  10. "App\\": "app/",
  11. "Base\\": "modules/Base/",
  12. "Backend\\": "modules/Backend/",
  13. "Frontend\\": "modules/Frontend/"
  14. },
  15. "files": [
  16. "modules/Base/helpers.php"
  17. ]
  18. }
  19. ...
  20. }
  • 自动加载命令,在应用根目录命令行执行

Code:

  1. composer dumpauto
  • 命名空间举例
    • 基础模块命名空间为 namespace Base
    • 基础模块-控制器命名空间 namespace Base\Controllers
    • 基础模块-模型命名空间 namespace Base\Models

配置模块化服务

  • 修改config/app.php

Code:

  1. <?php
  2. return [
  3. //省略之前内容
  4. 'providers' => [
  5. //...
  6. // 模块化的Provider
  7. Base\Providers\BaseServiceProvider::class, //公共基本服务Provider
  8. Backend\Providers\BaseServiceProvider::class, //后台服务Provider
  9. Frontend\Providers\BaseServiceProvider::class, //前台基本服务Provider
  10. ],
  11. //省略之后内容
  12. ];

新建各模块路由文件

Code:

  1. - base.php
  2. - backend.php
  3. - frontend.php

Code:

  1. routes/
  2. ├── api.php
  3. ├── backend.php
  4. ├── base.php
  5. ├── channels.php
  6. ├── console.php
  7. ├── frontend.php
  8. └── web.php





如果你觉得本篇文章对您有帮助,请打赏作者

上一篇: Centos下Redis的安装与配置

下一篇: Selenium2+python自动化-18种定位方法(find_elements)

最新评论

暂无评论

热门文章

最新评论

网站数据

网站文章数:484

今日UV/PV/IP:1/1/1

昨日UV/PV/IP:3/4 /3

TOP