【问题标题】:Is a good idea have a BaseController and make all controllers extend that class?拥有一个 BaseController 并让所有控制器扩展该类是个好主意吗?
【发布时间】:2011-02-19 06:09:58
【问题描述】:

我需要所有控制器中的一些共同行为。拥有一个 BaseController 并让所有控制器扩展该类是个好主意吗?如果是这样,避免Fatal error: Class 'BaseController' not found 错误的正确方法是什么。

【问题讨论】:

  • 这个BaseController类的路径是什么?

标签: php zend-framework classnotfound


【解决方案1】:

这当然是一种常见的方法。

但是article by ZF project lead Matthew Weier O'Phinney 解释了action-helpers 如何以更大的灵活性提供相同的好处。

特别是,一个通用的基本控制器经常成为多个但不是所有控制器中使用的功能的垃圾场,因此它变得过大了。 Action-helpers 是一种延迟加载替代方案,可在您需要的时间和地点准确地调用功能。

此外,action-helper 调度挂钩 - init()preDispatch()postDispatch() - 允许您在 每个控制器 的基础上自动执行类似插件的功能。

我会去行动助手。但与大多数事情一样,YMMV。 ;-)

【讨论】:

    【解决方案2】:

    不,不要那样做。使用动作助手为您的控制器添加功能。如果您使用基本控制器,它会很快变得复杂和不稳定。动作助手允许更大的灵活性。

    【讨论】:

    • 为什么/如何会变得复杂或无法使用?
    • 大卫已经很好地解释了这一点
    【解决方案3】:

    是的,这是一个好主意,也是一种非常常见的模式。查看参考 ZF 手册的Subclassing the Action Controller 部分。

    【讨论】:

      【解决方案4】:

      是的,这是个好主意。

      避免致命错误的正确方法是什么:找不到类'BaseController'错误。

      你应该阅读更多关于Zend_Loader,以避免这个错误

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-10
        • 2011-08-12
        • 1970-01-01
        • 2014-09-30
        • 2016-04-10
        • 2010-10-10
        • 2014-03-09
        • 1970-01-01
        相关资源
        最近更新 更多