2013-01-10 25 views
1

zf2 database and models tutorial像這樣的路徑導致目錄包含我的模型類:ZF2目錄/命名空間模型對象位置

module/Album/src/Album/Model/AlbumRelatedClass.php 
module/Album/src/Album/Model/AlbumRelatedTable.php 

我:

module/Album/src/Album/Model 

我在創建了兩個以上類別的想把這些類放在

module/Album/src/AlbumRelated/Model/ 

我已經創建了重複的模型類出於此測試的目的,不幸的是,我的模塊配置相冊告訴我,它無法找到專輯相關位置的類。我試圖將AlbumRelated位置中的名稱空間更改爲AlbumRelated \ Model,並直接引用類位置(\ Album \ Model \ AlbumRelated()),但未成功。

有誰知道我該怎麼做?如果我不應該這樣做,有人可以解釋爲什麼嗎?我也很想知道爲什麼文件夾結構是Album/Model/Album(它看起來多餘,而且我不清楚教程中的解釋)。

給出將是巨大的任何幫助,謝謝:)

回答

0

簡短的回答是,它不能找到類,因爲你可能沒有設置自動加載磁帶機的配置,以瞭解新的「AlbumRelated」命名空間。看看\Album\Module::getAutoloaderConfig()會發生什麼。您可能想要將一個鍵/值對添加到namespaces,如'AlbumRelated' => __DIR__ . '/src/AlbumRelated'。這將告訴自動加載器在AlbumRelated命名空間下的哪些類中尋找類。

這就是說,

如果我不應該這樣做,有人可以解釋,爲什麼?

你可能不應該那樣做。你有一個名爲\Album的頂級命名空間。然後你有它的名字空間\Album\Model。任何與專輯有關的模型都應該在那裏生活。想象一下,您的系統中有一個實體用於記錄標籤,因此您可以將專輯與發佈它的標籤相關聯。 ZF2的期望是,你會創建一個名爲\Album\Model\RecordLabel的類,它生活在module/Album/src/Album/Model/RecordLabel.php。只要我們假設RecordLabels主要與專輯相關,那麼這一切都非常合理。

當然,如果您有很多關於管理它們的工作流程,您也可以將RecordLabel放在它自己的模塊中。

我也有興趣知道爲什麼文件夾結構專輯/型號/專輯

我假定你的意思相冊/ src目錄/專輯。這種冗餘是保持一個很好的清潔PSR-0設置。因此,第一張專輯正在識別該模塊,第二張專輯名稱空間的頂層。這提供了最大的靈活性,但並不是一條硬性規定。請參閱Rob Allen最近的博客文章​​進行探索。

+0

感謝您的回覆。這是否意味着將永遠不會有一個文件夾毗鄰模塊/相冊/ src /相冊,如模塊/相冊/ src/AdjacentFolder? – Shoreline