1

我一直在寻找并尝试学习多年,但它并没有坚持下去。Zend 2 上似乎只有 1 个教程,而且不是很聪明。这里我们有一个示例结构(本教程继续使用此应用程序)http://framework.zend.com/manual/2.0/en/user-guide/modules.html

zf2-tutorial/
    /module
        /Album
            /config
            /src
                /Album
                    /Controller
                    /Form
                    /Model
            /view
                /album
                    /album

这并不酷 - 我怎么知道哪张专辑是哪张?在 Zend 1 中,它很有意义——你有模块,然后你有控制器,而这些控制器有动作。

现在我有一个名为专辑的模块。是src/Album/...“单一控制器”吗?将:

zend1application/modules/album/albumcontroller.php映射到zend2application/modules/album/src/album/controller/albumcontroller.php? 那么,为什么现在有3张专辑呢?如果我将 albumcontroller.php 更改为 indexcontroller.php 会发生什么情况?(我一直在测试,但有太多的变化它永远不会坚持 - 我终于想我应该问问某人,如果我知道为什么我会记得。

如果我以不同的方式看待它,它似乎在专辑中module/Album并且module/Album/src/Album应该是相同的——那我们为什么要拥有它两次?这不是为错误腾出空间吗?比如为什么要有src/album文件夹?为什么不把 Controller、Form 和 Model 放在下面module/Album呢?

为什么会有一个名为Controller的文件夹?以前在一个模块中曾经有一个名为controllers的文件夹(复数,为什么现在是单数?),这是有道理的。但是为什么控制器src/Album现在在文件夹中?

感谢您的时间。我曾尝试进行研究,但我认为当(在我看来)它似乎很少记录时,它的吸收太大了。或者,如果有人可以向我指出像http://survivethedeepend.com/这样的书,但对于 ZF2,它会非常感激。

4

1 回答 1

4

Zend Framework 2 遵循PHPfigs PSR-0 标准。这意味着目录结构与类名直接相关。但在我接近那个之前,让我解释一下基本架构。

首先你有ModuleNAME. 由于模块名称需要是唯一的,因此只有将模块名称映射到Namespace模型的名称才有意义。

在 modules 文件夹中,您有三个子文件夹。用于配置项目的一个文件夹,名为config. 一个用于命名源代码文件的文件src夹和一个用于视图文件的附加文件夹view

这种分离只是为了概述。您将配置、视图和源代码彼此分开。将它们捆绑在一起是没有意义的,我想你会同意的。ZF1 也是如此。

有趣的部分是 source-folder src。前面我提到了PSR-0标准。这就是它生效的地方。默认情况下,将从 source-folder 中查看每个模块的源文件src。因此,只要您有课程,它将使用基于源文件夹的 PSR-0 标准。Mewning:My\Funky\Class会在里面找到src\My\Funky\Class.php

这基本上就是它的全部内容。控制器通常有一个 FQCN,Mymodule\Controller\SomeController所以你会在里面找到这个类src\Mymodule\Controller\SomeController.php

出现的主要问题可能是:为什么文件夹有时是 alllowercase有时是ucfirst. 答案再次是PSR-Standards。类名和/或命名空间应该以upperchar字符开头。由于路径名是case-sensitive,因此文件夹需要与类名完全匹配!

编辑我刚刚偶然发现的另一篇不错的读物是 Rob Allens 的最新博文:关于模块目录结构的思考。他解释了如何根据自己的喜好轻松更改默认设置。

于 2013-01-04T03:12:53.153 回答