2011-01-22 123 views
2

挑戰:Zend框架插件包裝載機

我想我的模塊化庫文件夾在我的Zend框架的應用程序。這很好,如果你想把所有的東西放在同一個命名空間中,比如「App_」。但問題是當你有一打的包中如註冊包裝,包裝ACL,導航包,富包裝等。現在,每個包有一定的視圖助手,有些控制器插件,一些動作助手再加上一些其他的基類。您可以單獨添加每個視圖幫助程序路徑,但這可能會破壞application.ini文件/ bootstrap。

所以現在的問題是,有沒有人知道「插件包」加載器ZF的?

爲了說明一下,最好有一個資源插件可以傳遞包名稱,它會添加名稱空間,註冊一些默認選項(如助手路徑),然後您可以將其配置爲向操作助手代理添加助手。每個插件包可能必須有自己的ini文件或一個init程序員可以初始化插件程序包的init類。任何想法或這種事情的知識將不勝感激。

+1

不知道這是否會對您有所幫助,但您是否考慮編寫自定義自動加載器。 PhpThumb的一個例子是http://goo.gl/cxj7P – Marcin 2011-01-22 09:46:37

+0

@Marcin:我喜歡你的建議。我認爲它是一個難題。不過,我正在尋找一個全功能插件包加載器。 – Fatmuemoo 2011-01-22 19:54:56

回答

1

你的問題很難找到解決辦法。 ZF似乎沒有按照你所希望的方式使用。

例如你想下面的包

  1. 導航
  2. ACL
  3. 會員註冊

這些都是完全獨立的,不需要所有的「插件」採埃孚在類似的方式。

  1. 導航需要存儲和建造需要包中的每個請求,所述導航對象然後需要Zend_View對象或可能不被使用。導航在視圖中被引用時會發生什麼,但它不存在?
  2. ACL包如此特殊,它以多種不同方式集成到ZF中,它需要一個有意義的方式來存儲和構建用於查詢應用程序到應用程序的基礎對象Zend_Acl
  3. 註冊需要一個控制器,一個動作和一個表單傳遞給Zend_View並且表單需要被處理。這就需要插入到你的ACL對象,想必數據庫和您的網站或許其他各個部分是它需要落在使用之外ACL

它不是不可能做你想做的更具體的權限,但必須有更好的方法。這幾乎聽起來像你試圖建立一個可選的,可插入包的CMS?

的ACL問題我已經有控制器,助手,型號,形式等。Zend_Controller_Plugin運行的圖書館解決,並試圖登錄的用戶,這個插件運行每一個應用程序創建,它的工作原理以及用途我已經使用了一段時間的ACL對象格式。

對於註冊我的圖書館有RegisterController,如果我的申請需要註冊,它有自己的RegisterController,它擴展了圖書館中的RegisterController。如果應用程序不需要註冊,那麼它沒有自己的RegisterController

我希望有幫助,我真的認爲以抽象的方式做這個建議是不值得的,永遠不會如此堅實和緊密,你可以真正依靠它,因爲每個應用程序都是特定的。

0

通常,在這種情況下,您應該使用已經模塊化的模塊,而不是模塊化庫。

modules/ 
    signup/ 
    models/ 
    plugins/ 

默認模塊的資源自動加載默認配置加載插件:

參見:http://framework.zend.com/manual/en/zend.loader.autoloader-resource.html

如果你真的需要模塊化庫,定製的自動加載磁帶機將是最好的解決辦法(有一個簡單的擴展抽象自動加載器)。

您也可以考慮爲每個模塊獨立的庫,添加到您的包含路徑(不推薦使用,因爲它會在應用程序變慢):

modules/ 
    signup/ 
    models/ 
    library/