espier
  • 介绍
  • 技术说明
  • 系统部署
    • 准备工作
      • 域名
      • 七牛
      • 微信开放平台第三方平台申请
      • 域名备案
      • 服务器方案
      • 腾讯位置服务
      • 小程序
      • EcshopX初始化
    • 部署方案
      • 单机部署方案
      • 集群部署方案
  • 框架
    • 文档说明
    • 入门指南
      • 开发环境搭建
        • docker环境
        • 本地环境
      • composer
      • 目录结构
    • 架构思想
      • 中大型项目架构
      • Repository
      • Service
    • Bundle
      • 请求
        • 路由
        • 控制器
      • 数据库
        • 快速入门
        • Repository
        • CRUD Repository
      • 事件系统
      • 消息队列
    • 规范
      • 说明
      • 关于「能愿动词」的使用
      • 代码规范
        • 基本代码规范
        • 编码风格规范
      • Bundle 规范
        • 命名规范
    • 调试
    • 环境变量及配置
  • 快速入门
  • 运维
    • 压力测试报告
      • 5机集群
  • API文档
  • 数据辞典
  • 数据库migration规则
Powered by GitBook
On this page

Was this helpful?

  1. 框架

Bundle

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 的基本功能,主要类和一些设计思想,供其他开发人员参阅

PreviousServiceNext请求

Last updated 5 years ago

Was this helpful?