laravel 中在不同命名空间下创建多个模块的最佳选择
Best option in laravel to create multiple modules under different namespace
我是 Laravel 的新手,需要知道如何在 Laravel.
中构建我的项目
1) 我们在项目中几乎有 21 个不同的模块 所有模块都连接到同一个数据库,但每个模块应该在不同的 namespace
下注册。
例如 - 如果我有管理员和库存,管理员应该访问 from /admin
,库存应该访问 from /inventory
。如果我可以从相应的应用程序文件夹中为每个 namespace
编写路由,那也很好。
2) 另一件事是我们有不同级别的用户,不同的 URL 将可供具有权限的用户访问。所以我打算编写一个中间件来在用户请求到达每个控制器之前检查权限。所以我还需要一个顶级中间件来检查登录用户对所有模块的权限。
用什么结构来实现这类应用比较好。我只需要在整个应用程序中只连接一个数据库。
这里有一些建议:
1) 每个模块必须有不同的控制器。如果需要,将控制器进一步放置在子目录中。
例如,我将与管理相关的控制器保存在 App\Controllers 目录下的 Admin 目录中,API 相关的保存在 App\Controllers\API 目录中,类似地, App\Controllers\Web 用于仅限网络的控制器。
2) 每个控制器都有一个单独的路由文件 (web.php)。
将路由文件命名为与您正在处理的模块名称相匹配的名称。例如,'inventory.php' 仅用于处理库存控制器路由。您还需要注册路由,就像 web.php、api.php 等路由已经预注册开箱即用。
3) 遵循设计模式以保持代码整洁。我建议看一下 Service-Repository 模式。
代码流程如下:
路由将请求传递给控制器。控制器不处理业务逻辑并将特定于任务的请求传递给服务 Class,所有业务逻辑都将在其中处理。如果需要任何数据库特定任务 (CRUD),服务 class 将调用存储库 class 中定义的方法。
为您的所有模块提供单独的服务和存储库class。例如,InventoryController -> InventoryService -> InventoryRepository。
This is just a practice that I follow and may not be the best
solution.
我是 Laravel 的新手,需要知道如何在 Laravel.
中构建我的项目1) 我们在项目中几乎有 21 个不同的模块 所有模块都连接到同一个数据库,但每个模块应该在不同的 namespace
下注册。
例如 - 如果我有管理员和库存,管理员应该访问 from /admin
,库存应该访问 from /inventory
。如果我可以从相应的应用程序文件夹中为每个 namespace
编写路由,那也很好。
2) 另一件事是我们有不同级别的用户,不同的 URL 将可供具有权限的用户访问。所以我打算编写一个中间件来在用户请求到达每个控制器之前检查权限。所以我还需要一个顶级中间件来检查登录用户对所有模块的权限。
用什么结构来实现这类应用比较好。我只需要在整个应用程序中只连接一个数据库。
这里有一些建议:
1) 每个模块必须有不同的控制器。如果需要,将控制器进一步放置在子目录中。
例如,我将与管理相关的控制器保存在 App\Controllers 目录下的 Admin 目录中,API 相关的保存在 App\Controllers\API 目录中,类似地, App\Controllers\Web 用于仅限网络的控制器。
2) 每个控制器都有一个单独的路由文件 (web.php)。
将路由文件命名为与您正在处理的模块名称相匹配的名称。例如,'inventory.php' 仅用于处理库存控制器路由。您还需要注册路由,就像 web.php、api.php 等路由已经预注册开箱即用。
3) 遵循设计模式以保持代码整洁。我建议看一下 Service-Repository 模式。
代码流程如下:
路由将请求传递给控制器。控制器不处理业务逻辑并将特定于任务的请求传递给服务 Class,所有业务逻辑都将在其中处理。如果需要任何数据库特定任务 (CRUD),服务 class 将调用存储库 class 中定义的方法。
为您的所有模块提供单独的服务和存储库class。例如,InventoryController -> InventoryService -> InventoryRepository。
This is just a practice that I follow and may not be the best solution.