foreach ($_controllers as $controller) { $controllers[] = '\\App\\' . str_replace('.php', '', $controller); } foreach (Resolver::resolve($controllers) as $controller => $callback) { $container[$controller] = $callback; } // Templates $container['view'] = function ($c) use($config) { $view = new Slim\Views\Twig($config['paths']['template'], []); $view->addExtension(new Slim\Views\TwigExtension($c['router'], $c['request']->getUri())); return $view; }; // Logging $container['log'] = function ($c) use($config) { $logger = new \Monolog\Logger('application'); $logger->pushHandler(new \Monolog\Handler\StreamHandler($config['paths']['log'], \Monolog\Logger::DEBUG)); $handler = $logger->getHandlers(); $handler[0]->setFormatter(new Monolog\Formatter\LineFormatter(null, null, false, true)); return $logger; }; // Whoops $container['errorHandler'] = function ($c) { return function ($request, $response, $exception) use($c) { $log = $c->get('log'); $log->critical($exception->getMessage()); $whoops = new \Whoops\Run(); $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler()); $whoops->register(); return $c['response']->write($whoops->handleException($exception)); }; };