要在 Controller 类之间使用相同的逻辑,我们可以创建 components 。但我想知道组件相对于自定义类有什么优势?
我们可以在另一个类中构造 Controller 类的实例。因此,我们可以对 $MyOtherController->myAction
使用相同的逻辑,而不是 $this->MyComponent->myAction
。
你能比较一下它们吗?或者我错过了什么?
最佳答案
CakePHP 组件和行为基本上是装饰器模式的应用。虽然您可能认为通过对 AppController 类进行子类化可以获得相同的结果,但如果您要考虑组件可能使用的所有不同组合,则这将需要您创建大量难以处理的子类来仅使用少数组件即可达到相同的结果。相反,您可以通过依赖注入(inject)随意混合和匹配组件/行为。
假设您当前有 3 个 Controller 子类:
MultiStepController
安全 Controller
MultiStepSecurityController
如果您想添加一种新类型的 Controller ,那么您必须创建 4 个新的 Controller 子类:
FooMultiStepController
FooSecurityController
FooMultiStepSecurityController
FooController
与仅将 'Foo'
添加到您想要在其中使用该组件的任何 Controller 的 $components
变量相比,这是大量冗余代码和不必要的工作。
因此,从可维护性和代码重用的角度来看,在大多数情况下,组件是比子类化更好的解决方案。
关于php - CakePHP 组件或其他 Controller 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11658139/