File: /var/www/vhosts/creativefellows.nl/firstbrick.creativefellows.nl/config/container.php
<?php
use App\Factory\LoggerFactory;
use App\Domain\Language\LanguageData;
use App\Cache\CacheInterface;
use Psr\Http\Message\ResponseFactoryInterface;
use Psr\Container\ContainerInterface;
use Slim\App;
use Slim\Middleware\ErrorMiddleware;
use Slim\Factory\AppFactory;
use Slim\Views\Twig;
use Slim\Views\TwigMiddleware;
return [
'settings' => function () {
return require __DIR__ . '/settings.php';
},
App::class => function (ContainerInterface $container) {
AppFactory::setContainer($container);
return AppFactory::create();
},
PDO::class => function (ContainerInterface $container) {
$settings = $container->get('settings')['db'];
$host = $settings['host'];
$dbname = $settings['database'];
$username = $settings['username'];
$password = $settings['password'];
$charset = $settings['charset'];
$flags = $settings['flags'];
$dsn = "mysql:host=$host;dbname=$dbname;charset=$charset";
return new PDO($dsn, $username, $password, $flags);
},
ErrorMiddleware::class => function (ContainerInterface $container) {
$app = $container->get(App::class);
$settings = $container->get('settings')['error'];
return new ErrorMiddleware(
$app->getCallableResolver(),
$app->getResponseFactory(),
(bool)$settings['display_error_details'],
(bool)$settings['log_errors'],
(bool)$settings['log_error_details']
);
},
ResponseFactoryInterface::class => function (ContainerInterface $container) {
return $container->get(App::class)->getResponseFactory();
},
LanguageData::class => function (ContainerInterface $container){
$settings = $container->get('settings')['localization'];
$root = $container->get('settings')['root'];
return new LanguageData($settings,$root);
},
Twig::class => function (ContainerInterface $container) {
$settings = $container->get('settings');
$twigSettings = $settings['twig'];
$options = $twigSettings['options'];
$options['cache'] = $options['cache_enabled'] ? $options['cache_path'] : false;
$twig = Twig::create($twigSettings['paths'], $options);
if ($settings['mode'] === 'DEVELOPMENT'){
$twig->addExtension(new \Twig\Extension\DebugExtension());
}
return $twig;
},
TwigMiddleware::class => function (ContainerInterface $container) {
return TwigMiddleware::createFromContainer(
$container->get(App::class),
Twig::class
);
},
];