
框架的价值就是把一致性的问题交给约定而不是自觉。ThinkPHP 6 做企业官网,四个方面的规范先立起来,后期的维护成本就会小很多。
按照访问者来划分结构。前台、后台、接口各自独立成应用,公共逻辑下沉到公共层,避免后台升级影响前台;路由统一显式定义,隐藏入口文件和默认路由,减少被扫描的范围。目录内按业务模块组织控制器,控制器保持薄逻辑,业务规则下沉到服务层,复用和测试都更容易。
中间件负责横向切分。登录校验、权限判定、请求日志、防跨站令牌各自承担不同的职责,按应用和路由分组挂载,执行顺序在配置中一目了然;中间件里不做业务判断,只做是否通过的裁决。全局中间件严格控制数量,每一个都会占用所有的请求时间。
验证器可以覆盖所有的写操作。场景化定义区分新增和编辑,字段规则、提示信息、过滤规则都在验证器里,控制器只调用不重复实现;验证失败统一返回结构化错误,前端根据字段进行提示。批量赋值的字段白名单同步维护,防止多余的字段被写入到数据表中。
异常处理形成统一的出口。业务异常和系统异常进行分级,业务异常返回可读的提示信息,系统异常记录日志后返回通用的错误信息,调试信息仅在开发环境中显示;自定义异常渲染保证接口和页面两种形式下的输出结果相同。
上线前最后一步就是检查环境配置:调试模式关闭、缓存和日志路径可以写入、定时任务注册完整。规范的价值在于半年之后,换人接手也可以按照约定继续写作。