gpt4 book ai didi

php - CakePHP 组件或其他 Controller 类?

转载 作者:行者123 更新时间:2023-12-04 05:38:03 26 4
gpt4 key购买 nike

要在 Controller 类之间使用相同的逻辑,我们可以创建 components .但我想知道组件对自定义类有什么好处?

我们可以在另一个类中构造一个 Controller 类的实例。所以我们可以使用与 $MyOtherController->myAction 相同的逻辑而不是 $this->MyComponent->myAction .
你能比较它们吗?还是我错过了什么?

最佳答案

CakePHP 组件和行为基本上是装饰器模式的应用。虽然您可能认为通过子类化 AppController 可以获得相同的结果。类,如果您要考虑可能使用组件的所有不同组合,这将需要您创建大量子类来获得与少数组件相同的结果。相反,您可以通过依赖注入(inject)随意混合和匹配组件/行为。

假设您目前有 3 个 Controller 子类:

  • MultiStepController
  • SecurityController
  • MultiStepSecurityController

  • 如果你想出一种你想要添加的新型 Controller ,那么你必须创建 4 个新的 Controller 子类:
  • FooMultiStepController
  • FooSecurityController
  • FooMultiStepSecurityController
  • FooController

  • 与仅添加 'Foo' 相比,这是很多冗余代码和不必要的工作。到 $components您想在其中使用组件的任何 Controller 的变量。

    因此,从可维护性和代码重用的角度来看,在大多数情况下,组件是比子类化更好的解决方案。

    关于php - CakePHP 组件或其他 Controller 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11658139/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com