公开摘要
开发哲学
- DRY:不写重复逻辑代码。
- 约定优于配置:优先选择框架提倡的做法,不过度配置。
- KISS:代码简单易读,不过度设计。
- 官方优先:优先采用官方推荐方案。
目录与分层
app/Http/Controllers/:控制器,应该只负责入参接收和响应包装。app/Http/Business/:业务逻辑层,承接校验、事务和业务流程。app/Http/Dao/:数据库操作层,一个数据表对应一个 DAO。app/Model/:数据库模型,枚举值和查询作用域应尽量收敛在模型或常量中。
环境、分支与配置
local对应开发环境。tests对应线上测试环境和beta分支。production对应线上生产环境和master分支。- 所有配置信息必须通过
config()读取;.env信息应先映射到 config 后再由业务代码读取。 - 绝不在配置文件以外直接调用
env()。
日常编码约束
- 一个方法只做一件事,避免控制器承载过多业务。
- 尽量补充必要注释,帮助他人理解和后续维护。
- 一个请求一个方法,不要在同一方法中混合处理 GET/POST。
- 不要直接拼接执行原生 SQL,必须使用 raw SQL 时要参数绑定。
Controller 越薄,业务系统越不容易在需求迭代中失控。
Migration 与发布
- 数据库结构变更必须通过 Migration 管理,绝不直接在线上手工改表。
- 新增表使用
make:migration create_xxx_table --create=xxx。 - 修改已有表使用
make:migration add_xxx_to_xxx_table --table=xxx。 - 执行指定迁移时应写完整文件名,避免误执行其他迁移。
- 执行迁移前,先确认当前环境和分支一致。