用途:面向 EspoCRM 自定义开发,覆盖模块、实体、关系、Hook、服务、API 端点与集成的开发规范,适用于使用 ORM、实现业务逻辑、创建 Hook、修改 metadata、构建自定义字段类型、用 SelectBuilder 编写复杂查询、实现自定义 API 动作以及打包扩展等场景。
核心架构原则:元数据驱动,实体定义、布局、字段配置以 JSON 存放;业务逻辑统一放在 Service 类中;数据操作统一经 ORM EntityManager;依赖通过构造函数注入,不传递 Container;Hook 仅用于校验与副作用;实体经 Repository 访问。
三条铁律:业务逻辑写在服务而非 Hook;数据访问走 EntityManager,禁止直接 PDO;不得将 Container 作为依赖传递。
主要能力与用法:在 Service 中注入 EntityManager 查询或保存实体,例如 getEntityById 或 getRDBRepository 配合 where 条件查询;Hook 必须实现接口而非继承基类,包含 BeforeSave、AfterSave、BeforeRemove、AfterRemove、AfterRelate、AfterUnrelate、AfterMassRelate 七类;metadata 变更后须执行 bin/command rebuild 重建缓存。
其他主题:SelectBuilder 高级查询、自定义 API 动作、自定义字段类型、前端定制、计划任务与邮件/PDF/ACL/工作流、扩展打包与版本管理,以及测试调试和 PHP 质量反模式。
限制与注意:资料未提供具体收费标准、平台要求或性能指标;所有命令与代码应保持原样,遵循类型声明、异常处理等规范。