我剛剛開始爲基於ZF2框架的新項目建立一個新的ZF2應用程序,並且正在查看他們的教程Models。模塊之間共享ZF2模型
tl; dr:我應該如何在多個不同模塊之間共享模型,方法是將模型放置在更高級別(外部/模塊)中的某個位置?
我們有幾個模塊的設置,像這樣:
/
/module/ModuleName
/module/ModuleName/config
/module/ModuleName/src
/module/ModuleName/src/ModuleName
我正要安裝的文件夾/module/ModuleName/src/ModuleName/Model/TableName.php
,但後來我意識到:該表將需要其他模塊訪問爲好。所以我該怎麼做?
我應該把模型文件夾放在/module/Model
中,否則會導致它被當作模塊,即site.com/model(基於我們當前的配置)。
我應該在地點之間複製和粘貼模型嗎?我應該將模型粘貼在/vendor/library/Company/Model
的某處嗎?不太確定是否有最佳做法!
問題2:本教程還建議使用ServiceManager實例化數據庫模型以使用相同的實例。如果我有一個帶有5個控制器的模塊,每個控制器訪問完全獨立的表格(例如每個表格有4個表格)會怎樣?在我看來,它會冗餘地初始化每個頁面加載的16個表(對於該模塊中的其他控制器)。單個表初始化會爲頁面加載增加55ms。有沒有解決的辦法??我不知道如何根據本教程的初始化tablegateway將配置移動到控制器的操作上?
非常感謝您的回覆安德魯!你說得對:#2,看起來我在wincachegrind中看着錯誤的東西。好消息!我在幾篇教程中看到過很多「UserMapper」 - 這只是一個例子,還是一個真正的ZF2?關於#1:所以如果我註冊'Manufacturing \ Model \ WorkflowTable'=> function($ sm){..}',那麼我應該能夠調用'$ this-> getServiceLocator() - > get 'Manufacturing \ Model \ WorkflowTable')'在其他庫中?在我們的模型中使用基礎模塊會更標準嗎? – Benno 2013-02-26 23:42:30
是的,這是主意,你可以在任何模塊中調用它,所有的服務管理器配置組合在一起,這樣你就可以從所有模塊獲取任何東西 – Andrew 2013-02-27 08:31:06
UserMapper只是我用過的一個例子,人們使用DataMapper映射器模式 – Andrew 2013-02-27 08:32:13