kascat/easy-module

为 Laravel 提供的简易模块化结构

1.2 2024-08-07 14:38 UTC

This package is auto-updated.

Last update: 2024-09-19 20:48:26 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License PHP Version Require

Laravel 框架的模块化结构。

模块化结构为项目提供了更好的组织,将每个功能/特性的代码集中在一个地方,便于创建和维护大小项目。

Easy Module 包不限制 Laravel 标准文件结构的使用,可以用于新项目和现有项目。

安装

要安装 Easy Module 包,只需按照以下三个步骤操作:

1. 通过 composer 安装

composer require "kascat/easy-module"

2. 将以下类添加到 config/app.php 文件中 providers 部分

Kascat\EasyModule\Core\ModularServiceProvider::class

示例

'providers' => [
    // ...Outros providers existentes

    Kascat\EasyModule\Core\ModularServiceProvider::class
]

3. 在项目根目录的 composer.json 文件中配置 psr-4,注册 modules 文件夹

"": "modules/"

示例

"autoload": {
  "psr-4": {
    "": "modules/",
    "App\\": "app/",
  }
},

创建模块

要创建一个完整的模块,只需执行 php artisan easy:module [模块名称] 命令,它将生成标准结构,但 Easy Module 包还提供了一系列命令,可以帮助单独创建模块的结构和文件。

文件已生成,包含创建、读取、编辑和删除(CRUD)数据库表中与模块 model 相关的结构,只需配置 modelrequest 的表属性即可。

命令

创建包含主要文件的完整模块

php artisan easy:module [nome do módulo]

创建 Controller 及相关文件(Controller、Request、Response、Api Route)

php artisan easy:controller [nome do módulo]

创建 Model

php artisan easy:model [nome do módulo]

创建 ServiceRepository

php artisan easy:service [nome do módulo]

创建路由文件(api.php 和 web.php)

php artisan easy:route [nome do módulo]

创建 artisan 命令文件(console.php)

php artisan easy:command [nome do módulo]

替换文件

相同的命令可以多次用于同一模块,但已存在的文件不会被替换,将创建带有唯一后缀的新文件,之后可以适当修改。

要替换现有文件,请在命令中使用 --overwrite-O 标志

示例

php artisan easy:module sample -O

结构

模块化结构非常简单易懂,每个模块都包含具有特定目的的文件。

以下是一个模块(Sample)结构的示例,由 php artisan easy:module sample 命令生成:

> modules
  > Samples
      api.php
      Sample.php
      SampleController.php
      SampleRepository.php
      SampleRequest.php
      SampleResponse.php
      SampleService.php

如果您的模块不使用自动创建的某些文件,可以将其删除,但请注意可能存在的其他文件引用。

责任

以下列出了模块中每个文件的责任。

Model

model 文件/类遵循 Laravel 原始 model 的相同模式和结构,与数据库表通信,并通常定义属性和关系。

文件和类的名称接收模块的单数名称,例如:User.php User::class

Controller

controller 文件也以相同的方式行为,负责包含路由将调用的函数。但区别在于使用适当的文件(Request 和 Response)进行请求验证和响应格式化。

Request

用于对每个路由接收到的数据进行验证。

Response

用于对路由响应数据进行格式化或修改。

Repository

repository 只负责构建将在数据库中执行的各种 queries

Service

O服务负责处理模块的主要逻辑(业务规则)。

API和Web

路由文件api.phpweb.php用于注册模块的路由,这与Laravel中的routes/api.phproutes/web.php文件中的定义方式相同。

控制台

文件console.php用于创建与应用模块相关的自定义命令,它可以像Laravel中的routes/console.php文件一样使用,并且可以通常在app/Console/Kernel.php中进行调度。