Zend 框架之 Zend_Application 之(三):舉例說明

Bootstrap 類本身典型的內容不多;通常,它只是擴展 bootstrap 基類,而裏面沒有任何代碼:

帶有一個對應的配置文件:

      ; APPLICATION_PATH/configs/application.ini
      [production]
      autoloaderNamespaces[] = "My_"
      bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
      bootstrap.class = "Bootstrap"
      pluginpaths.My_Bootstrap_Resource = "My/Bootstrap/Resource"
      resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
       
      [testing : production]
      [development : production]

注意:自動加載器的命名空間

因爲以下例子使用的是定製的代碼,我們需要在我們的配置文件中爲這些代碼註冊命名空間;這將通過 autoloaderNamespaces 配置鍵完成,它是一個數組。另外,爲了保證定製的插件資源被找到,我們需要在 bootstrap 註冊一個插件前綴路徑。這將通過 pluginpaths 配置鍵做到,它是一個關聯數組,其中的鍵名代表將要使用的前綴,值代表前綴的相對的路徑。

然而,對初始化作必須的定製,你有兩個選擇。首先,你可以寫一個以 _init 爲前綴的方法,來指定將要引導的代碼。這些方法將會被 bootstrap() 調用,也能被當作公共方法被調用:bootstrap()。它們可以接受一個可選的數組參數。

如果你的資源方法返回一下值,它會被保存在 bootstrap 內的一個容器中。這將會很有用,特別是需要和不同資源互動的時候(例如一個資源把它自己注入到另外一個資源)。getResource() 方法然後可以用來檢索這些值。

下面的例子展示了一個初始化請求對象的資源方法。它使用了依賴性檢查(它取決於前端控制器),從 bootstrap 捕獲一個資源,然後返回一個值,保存到 bootstrap 中。

注意在這個例子中,bootstrap() 的調用;這將確保前端控制器在調用這個方法之前已經被初始化。這個調用可能觸發一個資源或者這個類內的另外一個方法。

另外一個選擇是使用資源插件。資源插件是擔負特定初始化的對象,可以在以下情況下被指定:

  • 當實例化 Zend_Application 對象
  • bootstrap 對象初始化的過程中
  • 可以通過調用 bootstrap 對象的方法來明確指定它們

資源插件應用了 Zend_Application_Resource_ResourceAbstract 類,它簡單的定義了它們允許調用者和選項注入,並且他們有一個 init() 方法。舉例來說,一個定製的視圖引導資源可能看起來是這樣的:

爲了告訴引導程序使用這個,你可能需要提供資源插件類的名字,或者一個插件加載器前綴路徑和插件資源短名的組合(例如,“view”):

資源插件可以通過訪問上一級 bootstrap 來調用其它的資源和初始化:

在普通用法中,你應該實例化應用程序,引導它,和運行它:

對於一個定製的腳本,你可能需要簡單的初始化指定的資源:

不同於使用 bootstrap() 方法去調用內部方法或者資源,你可以使用重載:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章