Zend Framework - 模組系統



Zend Framework 提供了一個強大的模組系統。該模組系統包含三個元件,如下所示:

  • 模組自動載入器 - 模組自動載入器負責從各種來源定位和載入模組。它也可以載入打包為Phar 歸檔檔案的模組。模組自動載入器的實現位於 myapp/vendor/zendframework/zend-loader/src/ModuleAutoloader.php。

  • 模組管理器 - 模組自動載入器找到模組後,模組管理器會為每個模組觸發一系列事件。模組管理器的實現位於 myapp/vendor/zendframework/zendmodulemanager/src/ModuleManager.php。

  • 模組管理器監聽器 - 它們可以附加到模組管理器觸發的事件。透過附加到模組管理器的事件,它們可以執行從解析和載入模組到為每個模組執行復雜工作的任何操作。

MVC Web 模組系統

Zend Framework 中的 MVC Web 應用程式通常編寫為模組。單個網站可以包含一個或多個按功能分組的模組。面向 MVC 的模組的推薦結構如下:

module_root/ 
   Module.php 
   autoload_classmap.php 
   autoload_function.php 
   autoload_register.php 
   config/ 
      module.config.php 
   public/ 
      images/ 
      css/ 
      js/ 
   src/ 
      <module_namespace>/ 
      <code files> 
   test/ 
      phpunit.xml
      bootstrap.php 
      <module_namespace>/ 
         <test code files> 
   view/ 
      <dir-named-after-module-namespace>/ 
         <dir-named-after-a-controller>/ 
            <.phtml files>

該結構與上一章中討論的相同,但這裡它是通用的。autoload_ 檔案可以用作自動載入模組中可用類的預設機制,而無需使用zend-modulemanager中提供的更高階的模組管理器

  • autoload_classmap.php - 返回一個類名及其對應檔名陣列。

  • autoload_function.php - 返回一個 PHP 回撥函式。這可以使用 autoload_classmap.php 返回的類。

  • autoload_register.php - 註冊 autoload_function.php 返回的 PHP 回撥函式。

這些自動載入檔案不是必需的,但建議使用。在框架應用程式中,我們沒有使用autoload_ 檔案

模組類

模組類應命名為Module,模組類的名稱空間應為模組名。這將幫助 Zend Framework 更輕鬆地解析和載入模組。框架應用程式 (myapp) 應用程式中的Application 模組程式碼,myapp/module/Application/src/Module.php 如下所示:

namespace Application; 
class Module { 
   const VERSION = '3.0.2dev'; 
   public function getConfig() { 
      return include __DIR__ . '/../config/module.config.php'; 
   } 
}

Zend Framework 模組管理器將自動呼叫getConfig()函式,並執行必要的步驟。

廣告