2010-02-24 35 views
1

Zend框架發展得相當快,我們都同意,我們都在嘗試Zend Framework的模塊化結構時感到驚訝,如果要具體引導模塊 - 模塊的所有引導文件都在開始時執行無論我們是否使用/訪問該模塊。據我記得,模塊bootstrap像插件一樣執行到主Bootstrap。但另一方面,我發現ZF的實現非常複雜,並且非常尊重設計模式。Zend框架的模塊化方法是否具有良好的邏輯?

所以纔去和絆模塊延遲加載/引導,我想對自舉方面

一個目標思想 - 因此,沒有在ZF初始模塊的Bootstrap有它後面的固體邏輯或它應該改變成像懶/按需引導?

我知道問題是很含蓄的,所以讓我給些

例如在一個模塊化的應用程序,我們希望爲每個模塊一個單獨的初始配置(如單獨的佈局)和自舉是「做初始配置的地方」的範例,對吧?但是,如果我們按照Zend文檔說的方式放置初始化/配置,那麼我們的應用程序會爲每個請求加載在每個模塊引導類中設置的所有初始化(我只是一個客戶,並且仍然在我請求管理員引導時將被執行,儘管在後臺) - 這是非常糟糕的系統。

據我看到有兩個辦法的思路可以流動

  1. 有在模塊引導的東西,只是整個系統 (幾乎看不出它什麼都可以互補)
  2. 要更改與幫助行動插件或擴展引導類與boostrapping的madule白手起家

而且我最初的問題是,交易沒有任何邏輯遵循先選擇自舉的方式模塊,第二種選擇將是一個不錯的選擇?

回答

1

是的。它基於調度過程。在引導時你無法確定你需要哪一個。模塊引導程序有一個優點 - 您不需要將模塊代碼插入主引導程序 - 它使模塊更「自包含」。

模塊取決於

  • 請求
  • 選擇的路由
  • 如果爲前。 _forward()被稱爲

但是你可能想爲每個模塊添加你的路由,注入你自己的disatcher等。而這一切都需要在創建請求對象之前完成。這就是爲什麼在開始時啓動所有引導程序。

在理想的情況下,您的引導程序不應該包含重複代碼或添加任何嚴重的開銷。您可以從其他啓動的引導程序中檢索資源,以便不存在像db適配器或視圖這樣的對象的副本。

+0

「您可以從其他啓動的引導程序中獲取資源,因此不會有像db適配器或視圖這樣的對象的副本。」 - btw如何獲取已啓動的模塊Bootstrap內其他(主)引導程序的資源, couse我無法獲得管理模塊中的「佈局」資源 – simple 2010-02-25 12:07:40

+0

您無法執行$ this-> getResource('layout')?這讓我感到驚訝。不是我曾經嘗試過,但我預計它會這樣工作......抱歉錯誤:) – 2010-02-25 17:26:27