插件为什么要从应用程序中扩展基类?

时间:2013-02-03 19:00:01

标签: php oop cakephp cakephp-2.3

如果您在创建PlugIns时阅读CakePHP的文档。它明确指出PluginAppModelPluginAppController基类来自AppModelAppController类。使用插件在应用程序中实现了哪些。

这对我来说似乎非常危险。

插件无法控制应用程序可能在这些基类中配置的回调,组件,帮助程序等。

PluginAppModel / PluginAppController扩展CakePHP lib中的基类是否有任何问题。与ModelController一样?

有人可以解释为什么插件应该扩展这些特定于应用程序的类的逻辑吗?

1 个答案:

答案 0 :(得分:2)

无论您做什么,都要从继承链中排除App *类,或者包含它们。总是存在可能失败的点,因为人们无法预测这些类中的行为。

不太可能的情况是,如果扩展App *基类而不是扩展它们,插件中的内容会中断。

Auth和Session Component就是Controller的一个很好的理由,你应该扩展App *类。 AppModel中的行为另一个。

如果您的插件依赖于Controller或Model类的某个属性的某个 - 未更改状态,那么在我看来构建该插件时您做错了什么。最好通过提供配置选项或检查继承属性以及附加组件和行为的状态来保持插件的灵活性。

如果你的插件确实存在缺陷 - 我仍然认为它做错了 - 你应该记录它,以便阅读文档的人能够正确地集成它。