Zend Framework - system modułowy

Zend Framework zapewnia potężny system modułów. System modułowy składa się z trzech elementów. Są następujące -

  • Module Autoloader- Moduł Autoloader jest odpowiedzialny za lokalizowanie i ładowanie modułów z różnych źródeł. Może ładować moduły spakowane jakoPhar archivestakże. Implementacja modułu Autoloader znajduje się pod adresem myapp / vendor / zendframework / zend-loader / src / ModuleAutoloader.php.

  • Module Manager- Gdy moduł ładujący moduły zlokalizuje moduły, menedżer modułów odpala sekwencję zdarzeń dla każdego modułu. Implementacja Menedżera modułów znajduje się pod adresem myapp / vendor / zendframework / zendmodulemanager / src / ModuleManager.php.

  • Module Manager Listeners- Mogą być dołączane do zdarzeń uruchamianych przez Menedżera modułów. Dołączając do wydarzeń menedżera modułów, mogą robić wszystko, od rozwiązywania i ładowania modułów do wykonywania złożonej pracy dla każdego modułu.

System modułów sieciowych MVC

Aplikacja internetowa MVC w Zend Framework jest zwykle napisana jako Moduły. Pojedyncza witryna internetowa może zawierać jeden lub więcej modułów pogrupowanych według funkcjonalności. Zalecana struktura modułu zorientowanego na MVC jest następująca -

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>

Struktura jest taka sama, jak omówiono w poprzednim rozdziale, ale tutaj jest ogólna. Plikautoload_ files może być użyty jako domyślny mechanizm automatycznego ładowania klas dostępnych w module bez korzystania z zaawansowanego Module Manager dostępne w zend-modulemanager.

  • autoload_classmap.php - Zwraca tablicę nazw klas i odpowiadających im nazw plików.

  • autoload_function.php- Zwraca wywołanie zwrotne PHP. Może to wykorzystywać klasy zwrócone przez autoload_classmap.php.

  • autoload_register.php - Rejestruje wywołanie zwrotne PHP, które jest zwracane przez autoload_function.php.

Te pliki do automatycznego ładowania nie są wymagane, ale zalecane. W aplikacji szkieletu nie używaliśmy rozszerzeniaautoload_ files.

Klasa modułu

Należy nazwać klasę Module Module a przestrzeń nazw klasy modułu powinna być Module name. Pomoże to Zend Framework w łatwym rozwiązaniu i załadowaniu modułu. PlikApplication kod modułu w aplikacji szkieletowej (myapp), myapp / module / Application / src / Module.php wygląda następująco -

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

Menedżer modułów Zend Framework wywoła rozszerzenie getConfig() działa automatycznie i wykona niezbędne kroki.