vittozich/modulara

此软件包最新版本(v0.4.0)没有可用的许可证信息。

让模块再次伟大

v0.4.0 2023-03-30 20:45 UTC

This package is auto-updated.

Last update: 2024-09-30 01:57:31 UTC


README

仅支持php 8.2和laravel 10(这是最低要求,有0.2.1版本支持laravel 9.6,但它只是“项目”)

检查功能

  1. 在浏览器中打开 /modulara/template/test 作为当前项目的uri。应该有一个包含文本“Hello from template”的页面
  2. 命令行工作正常。
  3. 测试仍在进行中。

模块化工作命令

  • php artisan modulara:config - 发布配置文件。
  • php artisan modulara:base - 发布基本结构,包含基本类,可以在模块中进行继承

模块化结构

所有模块化都从 Modular 文件夹开始

如果按照模块化结构创建模块,则所有迁移、视图和路由都将自动检测。

Base 文件夹中包含系统的主要元素,所有模块化元素都应该继承自这些元素,描述以 通用描述 : 具体描述主要元素 的形式构建

  • Actions - 动作,仅有一个公开方法的类 run,有带 dto 和不带 dto 的两种类型。Actions 只用于依赖注入框架。: 存在主要类(将被配置)和 DTO 对象处理类。
  • Controllers - 控制器和调用者(invokers)- 这是指仅执行控制器逻辑,而不执行应用程序逻辑的控制器,尽管可以首先在这里编写逻辑(为了简化):存在 api 和 web 控制器,它们被创建只是为了方便继承(和额外配置)
  • DTOs - 数据传输对象 - 允许在类和方法之间移动数据的类。: 存在可配置的主 DTO 对象
  • Models - 模型,与数据库交互并使用彼此之间的关联逻辑。: 存在根模型(带有注释描述的方法)和用于继承的主要模型(可以选择额外的参数,例如字段类型的时间戳)
  • Repositories - 存储库,在其中执行模型的查询逻辑。: 存在根存储库,它具有存储库模式的逻辑。
  • Routes - 标准路由:包含不公开的 web 和 api 路由模板,因为在自动确定模块化结构时不需要发布它们。
  • Tests - 主要测试,使用不同的方法测试数据库中的数据(需要 .env.testing 文件及其测试数据库连接)
    • DbTestCase - 测试测试数据库中的数据,在每次测试后自动清理数据库
    • ExistsDbTestCase - 测试现有数据库,不更新或清理数据库(用于搜索)
    • SimpleTestCase- 测试测试数据库中的数据,但不清理数据 - 用于检查填充和测试链

Mosules 文件夹中包含所有模块,它们可以有 1 到无限的嵌套级别。(1 个默认)

每个嵌套级别都应该有不同的名称,例如基本级别(最终)始终称为 ...Module (SomeNameModule),第二个级别 ...Section,第三个级别 ...Service 等。但最好最初只有 1 个级别。任何模块的名称都不应重复,即使它们位于不同的嵌套级别。

模块组件命名

必需(自动确定)

  • Migrations - 包含迁移的文件夹
  • Routes - 包含路由的文件夹,应包含和/或 api.phpweb.php
  • Views - 包含视图的文件夹,可以按模块名称访问

推荐(自动创建(在开发中))

  • Controllers - 模块控制器
  • Models - 模块模型
  • Factories - 用于创建对象的工厂,主要用于测试
  • Tests - 模块的各种测试(开发中,需要指定或描述测试如何访问此文件夹)

额外(自动创建(开发中)和遵循SOLID和部分DDD进行开发)

  • Repositories - 模块模型的存储库
  • DTOs - 用于在Actions或传递信息时使用的DTO对象
  • Actions - 只有一个方法(run)和嵌套Tasks的类

不推荐(由于关联性而不进行自动创建)

  • Services - 创建用于处理应用程序逻辑的模型的服务的服务(不推荐,因为服务可能很大,有大量的DI和方法)

开发计划

  • 创建简短的文档以快速工作。
  • 模块搜索的主要元素是Modular.php - 这是用于提供者的核心(在src/中)。
  • 模块配置文件modulara.php(最大嵌套深度 = 1)(在config/中)。
  • 在Laravel的基本构建中将Modular/Base发布到相应的文件夹,并重命名namespace
  • 创建用于处理模块性的自定义提供者。
  • 将DTO和Actions添加到结构和发布中。
  • 将工厂添加到DTO中,并描述DTO的功能和它们的变体。
  • 将一个模块的工作示例添加到基本发布中。
  • 基本测试以检查模块性的工作能力。
  • 修改Base的发布,以添加新元素而不破坏结构(自动添加没有的内容)。
  • 将Requests添加到模块逻辑中。
  • 描述或创建用于在模块性中处理测试的文档(或提供者)。
  • 解决模块之间的关联性问题(通过重定义类的静态导出方法或通过结构导出接口)+ 描述全局模块及其结构。
  • 在框架内部创建模块性元素的控制台命令。
  • 关于控制台命令和模块性结构的完整文档。
  • 将Job(队列)添加到模块性中。
  • 将observers和listeners与events添加到模块性中。
  • 在模块中开发日志记录系统。
  • 在模块性和开发中开发方法、code-style和code-convention,并开发模式(类似于porto)。
  • 完全或部分关闭模块的自动搜索,并允许手动指定。
  • 开发控制台命令的包装器(单独的包或在此中将提供链接)。
  • 开发模块性框架的独立框架(单独的项目,将提供链接)。
  • 将所有代码中的注释翻译成英语,其中包含俄语。
  • 开发自己的DTO库,以spatie/data-transfer-object为基础,或查看新的实现。