为什么Zend Framework Action Controllers有后缀?

时间:2010-08-14 11:32:45

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

我是一个新的Zend Framework用户,但我不熟悉PHP或编程。我一直在仔细研究代码,试着掌握一切如何插在一起。我一直在研究的部分之一是如何在系统中自动加载类。我可以看到:

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

基本上_转换为目录sepearator并自动加载。

我不明白(虽然我确定有一个很好的理由)是为什么动作控制器没有遵循这个惯例?

  • IndexController引用Application / controllers / IndexController.php

为什么不:

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

我猜这个类的后缀可以减少某个系统的某些复杂性,从第一次查看zend框架开始,一切都经过深思熟虑 - 我无法想象会在没有充分理由的情况下引入约定。

任何人都可以解释为什么控制器有前缀,或者甚至更好地指出核心中的一些代码,说明为什么它们必须加前缀?

谢谢:)

3 个答案:

答案 0 :(得分:5)

说实话,我并不完全确定为什么最初制定这些惯例。我怀疑它们与当时其他框架的发展方式有关 - 特别是,RoR受欢迎程度很高,这就是他们定义应用程序资源的方式。 (在最初的MVC迭代时,我刚开始在Zend;我在2006年秋天进行了重写,但其目标是使其与先前开发的内容保持一致,同时提供更好的和更多的灵活性。)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我自己对Zend Framework只是一个新手,但据我所知,鉴于Zend Framework目前的方式,没有充分的理由。我不确定这是从事情开始时的宿醉,还是只是参与者的偏好,但我听说ZF 2.0会改变它。