因为hcms是基于Hyperf开发的,所以基本目录结构都是与Hyperf一直,这里我们重点介绍一下app下各个目录。

Annotation

用于存放项目公共注解类,目前有ViewApi 注解,分别用于做视图渲染定义和Api接口定义。

Aspect

用于存放AOP处理类,目前有ViewAspectApiAspect分别用于处理视图渲染和Api接口。

Command

Hcms相关命令行操作,目前支持模块安装、模型创建等常用的命令行。

Exception

异常处理相关,里面有一个 ErrorException 异常类和三个异常处理类分别是,AppExceptionHandlerErrorExceptionHandlerHttpExceptionHandler

ErrorException

主要用于定义在开发过程业务抛出来的异常,例如在封装Service中,出现一些格式错误,传参错误等具体业务逻辑上的错误,都可以直接抛出ErrorException异常。

Handler

关于这里定义的三个Handler方法介绍如下:

  • ErrorExceptionHandler主要处理具体业务逻辑上的异常,对应ErrorException抛出的异常。
  • ApiErrorExceptionHandler主要处理具Api逻辑上的异常,对应ApiErrorException抛出的异常。
  • HttpExceptionHandler对应是http请求上的例如NotFoundExceptionHttpException称之为请求异常。
  • AppExceptionHandler项目异常,也就是除了上述两种异常以外的,都由它来处理。

    Service

    项目公共服务类,也就是会在项目中所有模块调用到的一个服务类。例如目前有的SettingService这是在后续安装的任何模块都有可能需要被调用或者继承的基础服务类。

    Application

    项目应用模块,这是项目各个模块的存放位置,每个模块都有独立的Controller、Model 和View。类似每个模块都是应该独立的应用。

  • Controller:控制器目录

  • Install:安装目录,主要安装需要执行的数据迁移、菜单权限和初始化配置信息。
  • Listener:事件监听处理
  • Middleware:中间件
  • Model:数据库model
  • Service:模块服务类
  • View:视图