FuelPHP - Moduły

Moduł to świetny sposób na pisanie funkcjonalności internetowych wielokrotnego użytku, takich jak blog, album, czat itp. Moduł nie zakłóca innego kodu w aplikacji internetowej. Mieszka we własnym folderze i po cichu zapewnia swoją funkcjonalność. Moduły to po prostu ten sam kontroler, modele i widoki, z tym wyjątkiem, że są pogrupowane, konfigurowane i umieszczane w specjalnym folderze. Zwykle moduł znajduje się w podkatalogu aplikacji o nazwie modules, który znajduje się pod adresem fuel / app / modules.

Konfiguracja modułu

Możemy zdefiniować ścieżkę modułów w głównym pliku konfiguracyjnym aplikacji, fuel / app / config / config.php w następujący sposób.

'module_paths' => array ( 
   path/to.’modules'.DS,              // path to application modules 
   path/to.’..’.DS.'globalmods'.DS    // path to our global modules 
),

Przestrzeń nazw modułów

W FuelPHP każdy moduł ma własną przestrzeń nazw PHP. Ustawienie oddzielnej przestrzeni nazw rozwiązuje konflikty nazw. Na przykład moduł pracownika można ustawić w obszarze nazw EmployeeModule w następujący sposób.

<?php  
   namespace Employeemodule;  

   class Controller_Employee { 
      //code here 
   }

Moduł musi mieć taką samą nazwę, jak nazwa folderu modułu.

Struktura modułu

Możemy stworzyć moduł tworząc nazwę folderu zdefiniowaną w konfiguracji. Nazwa folderów określa nazwę modułu i nazwę przestrzeni nazw dla klas w module.

Struktura modułu jest następująca -

  • classes
    • controller
    • model
    • view
  • config
  • lang
  • tasks
  • views

Moduł może mieć własne pliki konfiguracyjne. Jest to bardzo przydatne w konfiguracji routingu i nie zakłóca oryginalnej konfiguracji aplikacji. Inną ważną koncepcją jest to, że klasa modułu może być ponownie wykorzystana, ładując moduł w sekcji konfiguracji always_load w następujący sposób.

'always_load => array ( 
   'modules' => array('employeemodule'), 
),

Ponadto moduły mogą być ładowane i używane natychmiast bez konfigurowania w następujący sposób.

Module::load('employeemodule');  
\Employeemodule\Myclass::mymethod('params');