【问题标题】:Why should plugins extend base classes from the application?为什么插件应该从应用程序扩展基类?
【发布时间】:2013-02-03 19:00:01
【问题描述】:

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

这对我来说似乎很冒险。

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

让您的PluginAppModel/PluginAppController 仅扩展 CakePHP 库中的基类有什么问题吗?喜欢ModelController

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

【问题讨论】:

    标签: php oop cakephp cakephp-2.3


    【解决方案1】:

    无论您做什么,都应从继承链中排除 App* 类,或者是否包含它们。总会有可能失败的地方,因为人们在这些课程中所做的事情是不可预测的。

    如果您扩展 App* 基类而不是不扩展它们,则不太可能出现插件中断的情况。

    在控制器的情况下,身份验证和会话组件是您应该扩展 App* 类的一个很好的理由。 AppModel 中的行为是另一个。

    如果您的插件依赖于控制器或模型类的某个属性的某个未更改的状态,我认为您在构建该插件时做错了。最好通过提供配置选项或检查继承属性和附加组件和行为的状态来保持插件的灵活性。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多