【问题标题】:Why do Zend Framework Action Controllers have a Suffix?为什么 Zend Framework 动作控制器有后缀?
【发布时间】:2010-08-14 11:32:44
【问题描述】:

我是一个全新的 Zend Framework 用户,但我对 PHP 或编程并不陌生。我一直在阅读代码以尝试了解所有内容如何组合在一起。我一直在研究的部分之一是如何在系统中自动加载类。我可以看到:

  • Zend_Application_Bootstrap 引用 Zend/Application/Bootstrap.php
  • Zend_Controller_Action 引用 Zend/Controller/Action.php
  • ...等等等等

基本上 _ 转换为目录分隔符并自动加载。

我不明白(尽管我确信有充分的理由)是为什么动作控制器不遵循此约定?

  • IndexController 引用 Application/controllers/IndexController.php

为什么不:

  • Application_Controllers_Index -> /Application/Controllers/Index.php
  • Controllers_Index -> /Application/Controllers/Index.php

?

我猜想给类加上后缀会降低系统中某处的复杂性,从第一次查看 zend 框架开始,一切都经过深思熟虑 - 我无法想象没有充分理由引入约定。

谁能解释为什么控制器要加前缀,或者更好地指出核心中的一些代码来说明为什么它们必须加前缀?

谢谢:)

【问题讨论】:

    标签: php zend-framework naming-conventions controller action


    【解决方案1】:

    老实说,我并不完全确定这些约定最初是为何被开发出来的。我怀疑它们与当时其他框架的发展方式有关——特别是,RoR 越来越受欢迎,这就是他们定义应用程序资源的方式。 (在最初的 MVC 迭代时,我刚刚开始使用 Zend;我在 2006 年秋季进行了重写,但这样做的目标是保持它与之前开发的一致,同时提供更好和更多灵活性。)

    我们继续沿用这个范式,因为它强化了应用程序/层次结构下的所有项目都是资源而不是您的库代码的想法。这一点尤其重要,因为您可能在此树中包含非类代码(查看脚本、布局等)。

    但是,这确实让人有些头疼——资源加载器的引入表明我们有一个需要解决的问题。资源加载器基本上解决了症状,但不一定是根本原因(不良约定)。在我们开发 ZF2 时,我们将重新审视这一点。如果您有兴趣发表您的想法,我邀请您在 zf-contributors 邮件列表中这样做。

    【讨论】:

    • 嗨,马修,非常感谢您的回答——我很想找到有关约定的技术原因。很高兴这是您在 ZF2 上调查的内容,我一定会在邮件列表中发布一些想法。
    【解决方案2】:

    控制器的文件名和类名应该有一个后缀控制器。 Zend 在类名中看到一个后缀,并理解它是一个控制器。他在控制器文件夹中找到了这个类。

    【讨论】:

    • 当然可以判断一个控制器是否是一个控制器,因为它在控制器目录中?
    【解决方案3】:

    我本人对 Zend 框架还比较陌生,但据我所知,鉴于 Zend 框架目前的现状,没有充分的理由这样做。我不确定这是否是事情开始方式的后遗症,或者只是相关人员的偏好,但我听说 ZF 2.0 会改变这一点。

    【讨论】:

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