在日常的开发中,我们往往不会简单的开发单个功能或多个简单功能的项目,而且随着项目的推进,代码会越来越庞大,因此为了避免一个模块多个功能混杂的问题,这里采用模块化开发。
本系统采用的是:nwidart/laravel-modules,laravel 的模块管理器
git 地址:https://github.com/nWidart/laravel-modules
目录
1、安装
composer require nwidart/laravel-modules
2、添加服务
在 config /app.php
添加服务提供者
'providers' => [
Nwidart\Modules\LaravelModulesServiceProvider::class,
],
添加别名
'aliases' => [
'Module' => Nwidart\Modules\Facades\Module::class,
],
PS:以上内容在Laravel5.0之前必须添加,5.0之后则可不必须
执行完上面这条命令之后,在 config 文件夹下会生成一个 modules.php 文件,这个是模块开发的配置文件,你可以在这里面进行配置。
3、发布软件包
php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"
4、添加自动加载
修改文件:composer. json
{
"autoload": {
"psr-4": {
"App\\": "app/",
"Modules\\": "Modules/"
}
}
}
PS:添加完后composer dump-autoload更新
5、生成模块
php artisan module:make module-name
php artisan module:make module-name1 module-name2 module-name3 //生成多个模块
6、个人使用习惯
以上生成的目录结构的模块是在和 app 同级的目录下,不便于管理,建议将目录放置在app目录下
方法:修改配置文件 config/modules.php 文件
'namespace' => 'App\Modules',
'paths' => [
'modules' => base_path('App\Modules'),
]
7、路由修改
方法:修改配置文件 config/modules.php 文件
①将配置文件中有关 start 的配置去掉
'stubs' => [
'enabled' => false,
'path' => base_path() . '/vendor/nwidart/laravel-modules/src/Commands/stubs',
'files' => [
// 'start' => 'start.php',
'routes' => 'Http/routes.php',
],
'replacements' => [
// 'start' => ['LOWER_NAME'],
],
],
接下来再将 Blog/module.json 下面生成的 start.php 去掉
{
"files": [],
}
②修改路由文件生成路径
'stubs' => [
'files' => [
// 'start' => 'start.php',
'routes' => 'Routes/routes.php',
],
]
③接下来修改路由服务提供者,注册路由
php artisan module:route-provider project
为指定的模块生成给定的路由。 执行完此命令之后,会在 Blog/Providers 目录下面生成一个 RouteServiceProvider.php 文件,此文件就是路由的服务提供者。 接下来修改 RouteServiceProvider.php 文件
public function map(Router $router)
{
// if (!app()->routesAreCached()) {
// require __DIR__ . '/Http/routes.php';
// }
if (! app()->routesAreCached()) {
$this->mapWebRoutes();
}
}
protected function mapWebRoutes()
{
//方法一:
//Route::group([
//'middleware' => 'web',
//'namespace' => $this->namespace,
//], function ($router) {
//require module_path('Admin') . '/Routes/routes.php';
//});
//方法二:
Route::middleware('web')
->namespace($this->rootUrlNamespace)
->group(module_path('Project') . '/Routes/routes.php');
}
在此 RouteServiceProvider.php 文件已经修改完毕。 接下来修改 Blog/Providers/BlogServiceProvider.php 文件,修改如下:
public function register()
{
//注册服务提供者
$this->app->register(RouteServiceProvider::class);
}
至此,Laravel整个安装与模块化配置完成。
以上内容大多来自https://learnku.com/articles/6153/laravel-modular-development
实际开发应用时略做了改动,各位可以参考原文或自由发挥做出适合自己开发的调整。
本文介绍了如何在 Laravel 中实现模块化开发,详细讲解了从安装 nwidart/laravel-modules,到添加服务、发布软件包、配置自动加载、生成模块,再到个人使用习惯的设定和路由修改等步骤。通过这些步骤,可以有效地组织和管理大型 Laravel 项目中的代码,提高代码复用性和可维护性。
&spm=1001.2101.3001.5002&articleId=120007751&d=1&t=3&u=dcb442a2f35f4c12898963d493a28710)
962

被折叠的 条评论
为什么被折叠?



