📜  Zend框架-模块系统

📅  最后修改于: 2020-10-16 07:37:24             🧑  作者: Mango


Zend框架提供了功能强大的模块系统。模块系统具有三个组件。它们如下-

  • 模块自动加载器-模块自动加载器负责从各种来源定位和加载模块。它也可以加载打包为Phar归档文件的模块。模块自动加载器的实现位于myapp / vendor / zendframework / zend-loader / src / ModuleAutoloader.php。

  • 模块管理器-模块自动加载器找到模块后,模块管理器将为每个模块触发一系列事件。模块管理器的实现位于myapp / vendor / zendframework / zendmodulemanager / src / ModuleManager.php中。

  • 模块管理器监听器-它们可以附加到模块管理器触发的事件。通过附加模块管理器的事件,它们可以完成从解析和加载模块到为每个模块执行复杂工作的所有工作。

MVC Web模块系统

Zend框架中的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/ 
      / 
       
   test/ 
      phpunit.xml
      bootstrap.php 
      / 
          
   view/ 
      / 
         / 
            <.phtml files="">

其结构与上一章中讨论的相同,但是这里是通用的。 autoload_文件可用作默认机制,用于自动加载模块中可用的类,而无需使用zend-modulemanager中可用的高级模块管理器

  • autoload_classmap.php-返回一个类名及其对应文件名的数组。

  • autoload_function.php-返回PHP回调。这可以利用autoload_classmap.php返回的类。

  • autoload_register.php-注册由autoload_function.php返回的PHP回调。

这些自动加载文件不是必需的,但建议使用。在框架应用程序中,我们没有使用autoload_ files

模块类别

Module类应命名为Module ,模块类的命名空间应为Module name 。这将有助于Zend Framework轻松解析和加载模块。骨架(myapp)应用程序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()函数,并执行必要的步骤。