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;
  4: 
  5: // From Slim
  6: use Slim\Container;
  7: 
  8: // From Pimple
  9: use Pimple\ServiceProviderInterface;
 10: 
 11: // From 'charcoal-factory'
 12: use Charcoal\Factory\GenericFactory as Factory;
 13: 
 14: // From 'charcoal-translator'
 15: use Charcoal\Translator\ServiceProvider\TranslatorServiceProvider;
 16: 
 17: // From 'charcoal-view'
 18: use Charcoal\View\ViewServiceProvider;
 19: 
 20: // From 'charcoal-app'
 21: use Charcoal\App\AppConfig;
 22: use Charcoal\App\ServiceProvider\AppServiceProvider;
 23: use Charcoal\App\ServiceProvider\CacheServiceProvider;
 24: use Charcoal\App\ServiceProvider\DatabaseServiceProvider;
 25: use Charcoal\App\ServiceProvider\FilesystemServiceProvider;
 26: use Charcoal\App\ServiceProvider\LoggerServiceProvider;
 27: 
 28: /**
 29:  * Charcoal App Container
 30:  */
 31: class AppContainer extends Container
 32: {
 33:     /**
 34:      * Create new container
 35:      *
 36:      * @param array $values The parameters or objects.
 37:      */
 38:     public function __construct(array $values = [])
 39:     {
 40:         // Initialize container for Slim and Pimple
 41:         parent::__construct($values);
 42: 
 43:         // Ensure "config" is set
 44:         $this['config'] = (isset($values['config']) ? $values['config'] : new AppConfig());
 45: 
 46:         $this->register(new ViewServiceProvider());
 47:         $this->register(new AppServiceProvider());
 48:         $this->register(new CacheServiceProvider());
 49:         $this->register(new DatabaseServiceProvider());
 50:         $this->register(new FilesystemServiceProvider());
 51:         $this->register(new LoggerServiceProvider());
 52:         $this->register(new TranslatorServiceProvider());
 53: 
 54:         $this->registerProviderFactory();
 55:         $this->registerConfigProviders();
 56:     }
 57: 
 58:     /**
 59:      * @return void
 60:      */
 61:     private function registerProviderFactory()
 62:     {
 63:         /**
 64:         * @return Factory
 65:         */
 66:         if (!isset($this['provider/factory'])) {
 67:             $this['provider/factory'] = function () {
 68:                 return new Factory([
 69:                     'base_class'       => ServiceProviderInterface::class,
 70:                     'resolver_options' => [
 71:                         'suffix' => 'ServiceProvider'
 72:                     ]
 73:                 ]);
 74:             };
 75:         }
 76:     }
 77: 
 78:     /**
 79:      * @return void
 80:      */
 81:     private function registerConfigProviders()
 82:     {
 83:         if (empty($this['config']['service_providers'])) {
 84:             return;
 85:         }
 86: 
 87:         $providers = $this['config']['service_providers'];
 88: 
 89:         foreach ($providers as $provider => $values) {
 90:             if (false === $values) {
 91:                 continue;
 92:             }
 93: 
 94:             if (!is_array($values)) {
 95:                 $values = [];
 96:             }
 97: 
 98:             $provider = $this['provider/factory']->create($provider);
 99: 
100:             $this->register($provider, $values);
101:         }
102:     }
103: }
104: 
API documentation generated by ApiGen