因为hcms是基于Hyperf开发的,所以基本目录结构都是与Hyperf一直,这里我们重点介绍一下app下各个目录。
Annotation
用于存放项目公共注解类,目前有View
和 Api
注解,分别用于做视图渲染定义和Api接口定义。
Aspect
用于存放AOP处理类,目前有ViewAspect
和 ApiAspect
分别用于处理视图渲染和Api接口。
Command
Hcms相关命令行操作,目前支持模块安装、模型创建等常用的命令行。
Exception
异常处理相关,里面有一个 ErrorException
异常类和三个异常处理类分别是,AppExceptionHandler
、ErrorExceptionHandler
、HttpExceptionHandler
。
ErrorException
主要用于定义在开发过程业务抛出来的异常,例如在封装Service中,出现一些格式错误,传参错误等具体业务逻辑上的错误,都可以直接抛出ErrorException
异常。
Handler
关于这里定义的三个Handler方法介绍如下:
ErrorExceptionHandler
主要处理具体业务逻辑上的异常,对应ErrorException
抛出的异常。ApiErrorExceptionHandler
主要处理具Api逻辑上的异常,对应ApiErrorException
抛出的异常。HttpExceptionHandler
对应是http请求上的例如NotFoundException
、HttpException
称之为请求异常。AppExceptionHandler
项目异常,也就是除了上述两种异常以外的,都由它来处理。Service
项目公共服务类,也就是会在项目中所有模块调用到的一个服务类。例如目前有的
SettingService
这是在后续安装的任何模块都有可能需要被调用或者继承的基础服务类。Application
项目应用模块,这是项目各个模块的存放位置,每个模块都有独立的Controller、Model 和View。类似每个模块都是应该独立的应用。
Controller:控制器目录
- Install:安装目录,主要安装需要执行的数据迁移、菜单权限和初始化配置信息。
- Listener:事件监听处理
- Middleware:中间件
- Model:数据库model
- Service:模块服务类
- View:视图