File: /var/www/vhosts/creativefellows.nl/mygeomil.creativefellows.nl/v0.1/config/container.php
<?php
//use App\Routing\JwtAuth;
use App\Factory\LoggerFactory;
use App\Domain\User\Data\UserData;
use App\Domain\Storage\SessionStorage;
use Psr\Http\Message\ResponseFactoryInterface;
use Psr\Container\ContainerInterface;
use Slim\App;
use Slim\Middleware\ErrorMiddleware;
use Slim\Views\PhpRenderer;
use Slim\Interfaces\RouteParserInterface;
use Slim\Factory\AppFactory;
//use Slim\Interfaces\RouteParserInterface;
//use Slim\Interfaces\RouteResolverInterface;
return [
'settings' => function (){
$default_settings = require __DIR__ . '/settings.php';
$user_settings = require __DIR__ . '/settings_user.php';
$merged = array_merge($default_settings, $user_settings);
return $merged;
},
App::class => function (ContainerInterface $container) {
AppFactory::setContainer($container);
return AppFactory::create();
},
PhpRenderer::class => function (ContainerInterface $container) {
return new PhpRenderer($container->get('settings')['template_path']);
},
RouteParserInterface::class => function (ContainerInterface $container) {
$app = $container->get(App::class);
return $app->getRouteCollector()->getRouteParser();
},
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();
},
UserData::class => function (ContainerInterface $container){
$data = [
"user_id" => $_SESSION["user_id"],
"company_id"=> $_SESSION["company_id"],
"role" => $_SESSION["role"],
"access" => $_SESSION["user_access"],
"full_name" => $_SESSION["full_name"],
"email" => $_SESSION["email"],
"discount" => $_SESSION["discount"],
"session_id"=> $_SESSION["session_id"],
"address_id"=> $_SESSION["address_id"],
];
return new UserData( $data );
},
SessionStorage::class => function (ContainerInterface $container) {
return new SessionStorage("cart");
},
];