2013-01-04 47 views
1

我一直在尋找並努力學習多年,但它並不堅持。 Zend 2似乎只有1個教程,並不是很聰明。在這裏,我們有一個樣本結構(與此應用程序的教程收益)http://framework.zend.com/manual/2.0/en/user-guide/modules.htmlZend Framework 2層次結構語義?

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

這不是很酷 - 我怎麼知道這專輯是哪個?在Zend 1中,它有很多意義 - 你有模塊,然後你有控制器,而這些控制器有行動。

現在我有一個名爲Album的模塊。是「單個控制器」的src/Album/...?會:

zend1application/modules/album/albumcontroller.php map to zend2application/modules/album/src/album/controller/albumcontroller.php?那麼爲什麼現在有3張專輯?如果我將albumcontroller.php更改爲indexcontroller.php,會發生什麼情況? (我一直在測試,但有這麼多的變化它永遠不會堅持 - 我終於想我應該問別人,如果我知道爲什麼我會記住

如果我看它用不同的方式似乎相冊在module/Albummodule/Album/src/Album應該是相同的 - ?那麼,爲什麼我們有兩次不只是讓犯錯的餘地就像爲什麼有src/album文件夾爲什麼不把控制器,形狀和型號module/Album

下???爲什麼有一個名爲Controller的文件夾?曾經有一個名爲控制器的文件夾(複數,爲什麼現在單數?)在一個模塊之前,這是有道理的。 /現在是src/Album文件夾中的控制器?

謝謝你的時間。我試圖進行研究,但我認爲這太吸引人了(在我看來)它似乎稀少地記錄在案。或者,如果有人能指給我一本像http://survivethedeepend.com/這樣的書,但對於ZF2來說,它會受到很大的讚賞。

回答

4

Zend Framework 2遵循PHPfigs PSR-0 Standards。這意味着目錄結構直接與類名相關。但在我接近之前,讓我解釋一下基本架構。

首先你有ModuleNAME。由於模塊名稱必須是唯一的,因此將模塊名稱映射到模型的Namespace纔有意義。

模塊文件夾內有三個子文件夾。配置項目名稱爲config的一個文件夾。一個用於源代碼文件的文件夾名爲src,另一個用於查看文件的文件夾view

此分隔僅用於概述。您將配置,視圖和源代碼從另一個分離。把它們串在一起沒有意義,我想你會同意的。 ZF1也是如此。

有趣的部分是源文件夾src。之前我提到過PSR-0標準。這是它生效的地方。默認情況下,將從源文件夾src查看每個模塊的源文件。所以,無論何時你有一個班級,它都將使用基於源文件夾的PSR-0標準。 Mewning:My\Funky\Class將被發現在src\My\Funky\Class.php

而這基本上都是有它的。控制器通常有一個像Mymodule\Controller\SomeController一個FQCN所以你會發現這個類裏src\Mymodule\Controller\SomeController.php

導致的主要問題可能是:爲什麼有時所有lowercase有時ucfirst的文件夾。答案再次是PSR-Standards。類名和/或命名空間應該以upperchar字符開頭。由於路徑名是case-sensitive,所以文件夾需要完全匹配類名!

編輯我剛剛偶然發現的另一個不錯的閱讀是Rob Allens最新的博文:Thoughts on module directory structure。他解釋瞭如何很容易地將默認設置更改爲您的喜好。

+0

這很有道理。所以'src'中唯一的立即文件夾應該是模塊名稱?事實上'Controller','Model'和'Form'是單數只是一個怪癖(實際上很煩人) – Raekye

+0

當你考慮你的類名時,並不是一個怪癖。它將是'Modulename \ Controller \ IndexController'。這是一個控制器,所以單數只對'\ Controller'-文件夾合乎邏輯。 – Sam

+0

但在技術上不是一個控制器文件夾,如IndexController,MyOtherController等。小小驚喜,但只是想知道爲什麼它從Zend 1(我看到的大多數ZF1設置有控制器複數)更改。同樣,我們有多種模型和形式,都是複數形式。 – Raekye