Laravel 框架虽然是一套简洁、优雅的PHP Web开发框架,但是随着项目不断的增大,代码的增多,需求变的复杂多样化,如果所有的代码都写在一起时间久了代码必然会非常的混乱影响后续的维护。
因此采用模块化开发是非常有必要,将不同的业务需求分隔到不同的模块单独开发,代码更加的清晰,方面后期的维护。但是 laravel 框架没有明确的模块化划分,但是可以使用第三方nwidart/laravel-modules,实现laravel 的模块管理器。
如何安装Laravel Module
采用 composer 快捷安装laravel-modules,当然这一步是要建立在你本地已经安装了 composer 以及 laravel 框架的前提下。
1、安装命令
composer require nwidart/laravel-modules
在linux终端切换到laravel框架的根目录,执行上述代码;但是如果你直接这么做肯定会失败的,会有"proc_get_status() has been disabled for security reasons "和“The Process class relies on proc_open, which is not available on your PHP installation. ”这两个报错。
需要找到php.in文件,把proc_get_status() 和 proc_open()删除掉,不同的安装方式php.in文件的目录不一样,可以在linux终端下执行“which php”找到php目录来修改,修改完成之后重启php环境生效。修改完成之后重新执行上述命令即可。
2、添加服务提供者
'providers' => [ Nwidart\Modules\LaravelModulesServiceProvider::class, ],
'aliases' => [ 'Module' => Nwidart\Modules\Facades\Module::class, ],
在laravel根目录下config /app.php 找到providers和aliases两个数字,按照上述两个命令添加Module相关类。
3、发布软件包的配置
php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"
执行完上面这条命令之后,检查下 config 文件夹下是否生成一个 modules.php 文件。
4、添加自动加载
{ "autoload": { "psr-4": { "App\\": "app/", "Modules\\": "Modules/" } } }
在laravel框架下找到composer.json,找到 psr-4 添加"Modules\\": "Modules/" 如上述代码所示。
composer dump-autoload
执行上述命令生效
5、生成模块
php artisan module:make module-name
最后一步就是生成module模块,module-name可以用户自定义,以自己需要项目名命名就可以,比如“php artisan module:make seodd”,那么在laravel框架根目录下生成Modules/seodd,之后代码的编写在此目录包下进行即可,之后对框架升级对于代码的影响也会很小,有利于后期维护。
6、恢复删除的函数
为了安全起见,恢复php.in文件中删除掉的proc_get_status() 和 proc_open(),然后重启服务即可。