Bundle
Last updated
Last updated
Laravel(Lumen)官方建议将所有代码都放到 app 目录下面:
app 目录包含应用程序的核心代码。你应用中几乎所有的类都应该放在这里。
app 目录包含额外的各种目录,比如:Console, Http, 和 Providers
按照官方的建议将所有的应用程序代码都放到 app 目录里面,随着项目的增大,代码增多,需求逐渐复杂,后期将会导致代码过于复杂,维护成本急剧增高。
借鉴商派 ECOS 框架 APP 机制和 symfony 的 Bundle 系统,我们在 ecshopx 中也实现了一种模块化的机制,我们也称为 Bundle。
一个 Bundle 就是一个模块,其包含模块所有的资源。所有的 Bundle 都位于 src
目录下, Bundle 的命名规则为业务名称+Bundle
, 它的目录结构如下:
文件/目录
描述
Entities
包含本 Bundle 的所有实体类,一个实体类对应一张数据表。可以通过修改实体类来维护表结构
Events
包含事件类
Http
包含控制器,按照Api、FrontApi、ShopApi等分组,每个控制器都有所属版本号
Interfaces
包含本 Bundle 所有接口抽象
Jobs
包含队列任务类
Listeners
目录包含事件的处理类
Providers
包含本 Bundle 的服务提供者
Repositories
处理数据库逻辑,一般和entity表文件一对一。
Services
所有业务处理的逻辑放在此目录,供控制器调用
Traits
本 Bundle 可被复用的逻辑可以抽象为trait放在此目录
README.md
本 Bundle 的说明文件,介绍该 Bundle 的基本功能,主要类和一些设计思想,供其他开发人员参阅