Overview

Namespaces

  • Charcoal
    • App
      • Action
      • Config
      • Handler
      • Middleware
      • Module
      • Route
      • Script
      • ServiceProvider
      • Template

Classes

  • Charcoal\App\Action\AbstractAction
  • Charcoal\App\App
  • Charcoal\App\AppConfig
  • Charcoal\App\AppContainer
  • Charcoal\App\Config\CacheConfig
  • Charcoal\App\Config\DatabaseConfig
  • Charcoal\App\Config\FilesystemConfig
  • Charcoal\App\Config\LoggerConfig
  • Charcoal\App\Config\MemcacheCacheConfig
  • Charcoal\App\Config\MemcacheCacheServerConfig
  • Charcoal\App\Handler\AbstractHandler
  • Charcoal\App\Handler\Error
  • Charcoal\App\Handler\HandlerConfig
  • Charcoal\App\Handler\NotAllowed
  • Charcoal\App\Handler\NotFound
  • Charcoal\App\Handler\PhpError
  • Charcoal\App\Handler\Shutdown
  • Charcoal\App\Middleware\CacheMiddleware
  • Charcoal\App\Module\AbstractModule
  • Charcoal\App\Module\ModuleConfig
  • Charcoal\App\Module\ModuleManager
  • Charcoal\App\Route\ActionRoute
  • Charcoal\App\Route\ActionRouteConfig
  • Charcoal\App\Route\RouteConfig
  • Charcoal\App\Route\RouteManager
  • Charcoal\App\Route\ScriptRoute
  • Charcoal\App\Route\ScriptRouteConfig
  • Charcoal\App\Route\TemplateRoute
  • Charcoal\App\Route\TemplateRouteConfig
  • Charcoal\App\Script\AbstractScript
  • Charcoal\App\ServiceProvider\AppServiceProvider
  • Charcoal\App\ServiceProvider\CacheServiceProvider
  • Charcoal\App\ServiceProvider\DatabaseServiceProvider
  • Charcoal\App\ServiceProvider\FilesystemServiceProvider
  • Charcoal\App\ServiceProvider\LoggerServiceProvider
  • Charcoal\App\ServiceProvider\ViewServiceProvider
  • Charcoal\App\Template\AbstractTemplate
  • Charcoal\App\Template\AbstractWidget
  • Charcoal\App\Template\WidgetBuilder

Interfaces

  • Charcoal\App\Action\ActionInterface
  • Charcoal\App\AppAwareInterface
  • Charcoal\App\Handler\HandlerInterface
  • Charcoal\App\Module\ModuleInterface
  • Charcoal\App\Route\RouteInterface
  • Charcoal\App\Script\CronScriptInterface
  • Charcoal\App\Script\ScriptInterface
  • Charcoal\App\Template\TemplateInterface
  • Charcoal\App\Template\WidgetInterface

Traits

  • Charcoal\App\AppAwareTrait
  • Charcoal\App\CallableResolverAwareTrait
  • Charcoal\App\Script\ArgScriptTrait
  • Charcoal\App\Script\CronScriptTrait
  • Charcoal\App\Script\PathScriptTrait
  • Overview
  • Namespace
  • Class
  1: <?php
  2: 
  3: namespace Charcoal\App\Module;
  4: 
  5: // PSR-3 (logger) dependencies
  6: use \Psr\Log\LoggerAwareInterface;
  7: use \Psr\Log\LoggerAwareTrait;
  8: 
  9: // Module `charcoal-factory` dependencies
 10: use \Charcoal\Factory\FactoryInterface;
 11: 
 12: // Module `charcoal-config` dependencies
 13: use \Charcoal\Config\ConfigurableInterface;
 14: use \Charcoal\Config\ConfigurableTrait;
 15: 
 16: // Local namespace dependencies
 17: use \Charcoal\App\AppAwareInterface;
 18: use \Charcoal\App\AppAwareTrait;
 19: 
 20: /**
 21:  * q
 22:  */
 23: class ModuleManager implements
 24:     AppAwareInterface,
 25:     ConfigurableInterface,
 26:     LoggerAwareInterface
 27: {
 28:     use AppAwareTrait;
 29:     use ConfigurableTrait;
 30:     use LoggerAwareTrait;
 31: 
 32:     /**
 33:      * @var array $modules
 34:      */
 35:     private $modules = [];
 36: 
 37:     /**
 38:      * @var FactoryInterface $moduleFactory
 39:      */
 40:     private $moduleFactory;
 41: 
 42:     /**
 43:      * Manager constructor
 44:      *
 45:      * @param array $data The dependencies container.
 46:      */
 47:     public function __construct(array $data)
 48:     {
 49:         $this->setLogger($data['logger']);
 50:         $this->setConfig($data['config']);
 51:         $this->setApp($data['app']);
 52:         $this->setModuleFactory($data['module_factory']);
 53:     }
 54: 
 55:     /**
 56:      * @param FactoryInterface $factory The Module Factory to create module instances.
 57:      * @return ModuleManager Chainable
 58:      */
 59:     protected function setModuleFactory(FactoryInterface $factory)
 60:     {
 61:         $this->moduleFactory = $factory;
 62:         return $this;
 63:     }
 64: 
 65:     /**
 66:      * @return FactoryInterface
 67:      */
 68:     protected function moduleFactory()
 69:     {
 70:         return $this->moduleFactory;
 71:     }
 72: 
 73:     /**
 74:      * @param array $modules The list of modules to add.
 75:      * @return ModuleManager Chainable
 76:      */
 77:     public function setModules(array $modules)
 78:     {
 79:         foreach ($modules as $moduleIdent => $moduleConfig) {
 80:             $this->addModule($moduleIdent, $moduleConfig);
 81:         }
 82:         return $this;
 83:     }
 84: 
 85:     /**
 86:      * @param string                $moduleIdent  The module identifier.
 87:      * @param array|ConfigInterface $moduleConfig The module configuration data.
 88:      * @return ModuleManager Chainable
 89:      */
 90:     public function addModule($moduleIdent, array $moduleConfig)
 91:     {
 92:         $this->modules[$moduleIdent] = $moduleConfig;
 93:         return $this;
 94:     }
 95: 
 96:     /**
 97:      * @return void
 98:      */
 99:     public function setupModules()
100:     {
101:         $modules = $this->config();
102: 
103:         foreach ($modules as $moduleIdent => $moduleConfig) {
104:             if ($moduleConfig === false || (isset($moduleConfig['active']) && !$moduleConfig['active'])) {
105:                 continue;
106:             }
107: 
108:             $module = $this->moduleFactory()->create($moduleIdent);
109:             $module->setup();
110:         }
111:     }
112: }
113: 
API documentation generated by ApiGen