Beispiel #1
0
 /**
  * Constructor
  * @param  array $userSettings Associative array of application settings
  * @api
  */
 public function __construct(array $userSettings = array())
 {
     parent::__construct();
     // Settings
     $this['settings'] = function ($c) use($userSettings) {
         $config = new \Slim\Configuration(new \Slim\ConfigurationHandler());
         $config->setArray($userSettings);
         return $config;
     };
     // Environment
     $this['environment'] = function ($c) {
         return new \Slim\Environment($_SERVER);
     };
     // Request
     $this['request'] = function ($c) {
         $environment = $c['environment'];
         $headers = new \Slim\Http\Headers($environment);
         $cookies = new \Slim\Http\Cookies($headers);
         if ($c['settings']['cookies.encrypt'] === true) {
             $cookies->decrypt($c['crypt']);
         }
         return new \Slim\Http\Request($environment, $headers, $cookies);
     };
     // Response
     $this['response'] = function ($c) {
         $headers = new \Slim\Http\Headers();
         $cookies = new \Slim\Http\Cookies();
         $response = new \Slim\Http\Response($headers, $cookies);
         $response->setProtocolVersion('HTTP/' . $c['settings']['http.version']);
         return $response;
     };
     // Router
     $this['router'] = function ($c) {
         return new \Slim\Router();
     };
     // View
     $this['view'] = function ($c) {
         $view = $c['settings']['view'];
         if ($view instanceof \Slim\Interfaces\ViewInterface === false) {
             throw new \Exception('View class must be instance of \\Slim\\View');
         }
         return $view;
     };
     // Crypt
     $this['crypt'] = function ($c) {
         return new \Slim\Crypt($c['settings']['crypt.key'], $c['settings']['crypt.cipher'], $c['settings']['crypt.mode']);
     };
     // Session
     $this['session'] = function ($c) {
         $session = new \Slim\Session($c['settings']['session.handler']);
         $session->start();
         if ($c['settings']['session.encrypt'] === true) {
             $session->decrypt($c['crypt']);
         }
         return $session;
     };
     // Flash
     $this['flash'] = function ($c) {
         $flash = new \Slim\Flash($c['session'], $c['settings']['session.flash_key']);
         if ($c['settings']['view'] instanceof \Slim\Interfaces\ViewInterface) {
             $c['view']->set('flash', $flash);
         }
         return $flash;
     };
     // Mode
     $this['mode'] = function ($c) {
         $mode = $c['settings']['mode'];
         if (isset($_ENV['SLIM_MODE'])) {
             $mode = $_ENV['SLIM_MODE'];
         } else {
             $envMode = getenv('SLIM_MODE');
             if ($envMode !== false) {
                 $mode = $envMode;
             }
         }
         return $mode;
     };
     // Middleware stack
     $this['middleware'] = array($this);
 }