2014-11-13 31 views
0

我是MVC和ZF2的新手。Zend Framework新手入門2.如何正確構造模塊?

我成功地完成了他們的教程來構建一個基本的應用程序。 (http://framework.zend.com/manual/2.1/en/user-guide/overview.html)。在該教程中,他們創建了一個名爲「專輯」的模塊來添加/編輯/刪除音樂專輯。

我想要做的是創建一個應用程序,它將具有各種功能,如用戶帳戶管理,系統配置等。我知道通過閱讀其他文章,你不需要創建一個新的模塊每個功能,而不是將它們分組在一個使用實體下。

考慮到這一點,我開始創建我的第一個模塊'用戶'使用這種結構,但我不知道如果我做對了。結構我目前所面對的是:

/module 
/Application 
    /config 
    /language 
    /view 
    /src 
    /Application 
    /Controller 
    /UserController.php 
    /Entity 
    /User.php 
    /UserTable.php 
    /view 
    /user 
     /user 
     /index 

如果你想看看代碼退房回購在https://bitbucket.org/newvisionjames/zf2-test/overview

具體問題我已經是:

1)我有兩個「視圖'目錄,相當肯定這是錯誤的。哪一個是正確的,如果兩者之一?

2)在ZF2教程中,他們在/model下創建了兩個名爲Album.phpAlbumTable.php的php文件。我已經反映這是我的/Entity文件夾。這種直接傳輸是否正確? /Entity目錄是否使/model不必要?

總的來說,我想要做的就是設置這個框架,這樣它的工作,我可以從那裏學習,但現在我卡住了!任何有用的答案或有用的資源指針將不勝感激。

謝謝。

回答

1

ZF2遵循PSR-0標準,這也提高了其他框架模塊與ZF2交互的能力。要了解有關PSR-0標準的更多信息,請看這裏:https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md

以上例提到的用戶爲例,由於「用戶」的特性,您很可能會將用戶留在自己的模塊中。用戶是否只包含一個類來表示用戶,還是包含用於授權和認證的鉤子?路線如何處理?雖然初看起來用戶可能看起來很簡單,但它通常放置在它自己的模塊中。

這就是你可以重複使用/與他人分享你的模塊。一般來說,無論何時我構建應用程序,都將根據功能的適用位置將其移至多個模塊中。然後在模塊之間,如果我需要訪問另一個模塊,我將使用服務定位器來訪問這些方法。

例如在應用程序模塊下,我可能想引用用戶的名字,我可以調用用戶模塊服務,然後向我顯示用戶的詳細信息。這可以簡化您的代碼。

回答您的問題直接,但:

  1. 我目前所面對的兩個「視圖」目錄,敢肯定這是一個wrong..which是正確的,如果有一個?

答: 根據您發佈的目錄結構只有頂層的「查看」目錄下的「ZFSekeleton」表示看起來是正確的。

  1. 在ZF2教程中,他們在/ model下創建了兩個名爲Album.php和AlbumTable.php的php文件。我已經反映這是我的/實體文件夾。這種直接傳輸是否正確?具有/ Entity目錄是否使/ model不必要?

答案: 從技術上講,只要遵循namespace/psr-0標準,就可以將業務邏輯放在任何地方。除此之外,沒有真正的需求,儘管對於使用編碼器的重要性在於您提高了代碼的可讀性,或者您無法獲得更快的速度。

我通常喜歡獨立的我的SRC文件夾,像這樣:

控制器 模型 適配器 服務 實體

哪裏控制器顯然是ZF2控制器。模型包含控制器或類的一些業務邏輯。適配器是身份驗證適配器,數據庫適配器等。服務是其他模塊的服務定位器類以及要使用的當前模塊。實體是我的數據表示。

對於他們各自的,但這隻對我有意義。希望有所幫助。

+0

感謝威爾,移動到MVC的學習曲線是恐嚇,甚至在PHP程序深諳程序員。所以我認爲基於你說的話,儘可能模塊化應用程序!?要回答你的問題,用戶,最初的類將是定義用戶和更新數據庫以存儲他們的特點,但以後可能會用於認證等。我會做更多的模塊服務閱讀。 – anewvision

+0

不客氣,zf2確實有一個很大的學習曲線,文檔不是很受打擊或錯過。重要的是符合psr-0並記住你的類名稱空間。除了Controllers目錄外,只要命名空間包含適當的命名空間,命名的其餘部分並不重要,因爲您稱之爲包含業務邏輯的其他文件夾。並且使用zf2 classmap自動加載器將爲您節省很多標準自動加載器的麻煩 –

1

寫得很好,格式很好的問題。不要經常看到這一點。

  1. 更高一級是正確的。與src處於同一水平的那個。 src下的所有東西都是類文件。所以他們遵循PSR-0標準,每個文件都包含一個類,所以你不需要任何視圖。
  2. 似乎很好,但我使用的是教義而不是ZF2的ORM,我無法確定。我可以告訴你的是,你不需要一個model目錄,這可能會把你所有的實體放在Module\Entity之內。所以這是絕對正確的。

總的來說我會告訴你:堅持與config,src,view文件夾。這就是ZF2喜歡的,這也是ZF2開發人員期望的ZF2模塊。不要太在乎src文件夾中的慣例。你幾乎可以把你想要的東西放在那裏。如果你有一個體面的IDE(如PhpStorm),稍後移動或重命名類只需幾秒鐘。只需通過GitHub上的一些ZF2模塊並嘗試匹配您最常看到的分組或層次結構。

下面是關於模塊分離的一些說法:我認爲最好儘量嘗試將項目分解成模塊,只要您認爲它們可以分開生活即可。例如:你有一個網上商店,有一堆產品和一個搜索功能。現在問自己以下問題:「請問產品需要的搜索功能嗎?」沒有。產品可以沒有它。所以你把搜索功能放在它自己的ProductSearch模塊中。博客文章可以沒有他們的評論生活嗎是。創建一個BlogBlogComment模塊。

當我開始使用ZF2時,整個項目結構是我想到的很多東西。所以,如果你有任何問題,只需評論,我會盡力更新我的答案。

+0

感謝Rudolph,這是一個非常有用的回覆,感謝您注意到我花時間確保問題的正確寫入!從我得到的兩個答案中我可以看出,分離越多越好。而且ZF2可以提供更多的解釋/靈活性,而不是我對'/ src'的想法 – anewvision