gpt4 book ai didi

php - CakePHP:将 'Services' 逻辑放在哪里

转载 作者:可可西里 更新时间:2023-11-01 12:17:56 25 4
gpt4 key购买 nike

我有 Java/Grails 背景,似乎无法在网上找到关于 CakePHP 应用程序的服务逻辑应该存储在哪里的明确答案。通过“服务”,我谈论的是通常通过依赖注入(inject)实例化以在域对象上执行业务逻辑的类。他们应该能够查询任何领域对象并做出更改以响应 Controller 操作。

目前,CakePHP 的“Component”类似乎是最接近这种行为的。我可以将组件加载到任何 Controller 中并根据需要执行其方法。但是,我在几个地方读到组件永远不应该访问数据库,这样做会导致性能急剧下降。

我还查看了 CakePHP 的“行为”类,它似乎根本不符合要求。将域对象组织到数据结构设置中似乎很合适,但这不是服务将执行的逻辑。此外,要将任何模型定义导入行为,我必须编辑模型定义本身以允许访问,这非常尴尬。

所以我提出这样一个问题:服务逻辑应该存储在哪里?当然不是 Controller ,因为它应该只包含处理请求和发送响应的最少逻辑。

最佳答案

组件是 CakePHP 中的服务层。它们由依赖注入(inject)容器(Components Collection)构建,并传递给要处理的 Controller 、请求和响应。

除了保持层与层之间的分离之外,组件可以做什么没有任何限制。可以直接从组件使用数据库连接或使用模型并修改请求。

如果您只让组件针对特定情况起作用,那么它们实际上是非常轻量级的。检查 Action 名称是限制组件范围的常用方法。您还可以注入(inject)设置,以便它知道何时可以执行自定义服务逻辑。

关于php - CakePHP:将 'Services' 逻辑放在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17883978/

25 4 0