addDefinitions([ View::class => function (ContainerInterface $c) { $settings = $c->get('settings')['view']; return new Slim\Views\PhpRenderer($settings['template_path']); }, PDO::class => function (ContainerInterface $c) { $db = $c->get('settings')['db']; $options = array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' ); $pdo = new PDO("mysql:host=" . $db['host'] . ";dbname=" . $db['dbname'], $db['user'], $db['pwd'], $options); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); return $pdo; }, // monolog Logger::class =>function (ContainerInterface $c) { $settings = $c->get('settings')['logger']; $logger = new \Monolog\Logger($settings['name']); $logger->pushProcessor(new \Monolog\Processor\UidProcessor()); $logger->pushHandler(new \Monolog\Handler\StreamHandler($settings['path'])); return $logger; }, Session::class => function (ContainerInterface $c) { return new \SlimSession\Helper; }, Flash::class => function(ContainerInterface $c){ return new Messages();//new Slim\Flash\Messages(); }, ErrorHandler::class => function(ContainerInterface $c){ $responseFactory = $c->get(ResponseFactoryInterface::class); if( defined('IS_LIVE_SERVER') && IS_LIVE_SERVER && !defined('IS_DEVELOPER') ){ return function ($request, $exception, $displayErrorDetails, $logErrors, $logErrorDetails) use ($responseFactory) { $response = $responseFactory->createResponse(500); $response->getBody()->write('Something went wrong!'); return $response; }; }else{ return new ErrorHandler($responseFactory); } }, 'notFoundHandler' => function(ContainerInterface $c){ $responseFactory = $c->get(ResponseFactoryInterface::class); return function ($request, $response) use ($c) { $response = $responseFactory->createResponse(404); $response->getBody()->write('Page not found'); return $response->withStatus(404) ->withHeader('Content-Type', 'text/html'); }; }, ]); }; // // DIC configuration // $container = $app->getContainer(); // // // view renderer // // $container['view'] = function ($c) { // // $settings = $c->get('settings')['view']; // // return new Slim\Views\PhpRenderer($settings['template_path']); // // }; // // MySQL // $container['db'] = function ($c) { // $db = $c->get('settings')['db']; // $options = array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' ); // $pdo = new PDO("mysql:host=" . $db['host'] . ";dbname=" . $db['dbname'], // $db['user'], $db['pwd'], $options); // $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); // return $pdo; // }; // // monolog // $container['logger'] = function ($c) { // $settings = $c->get('settings')['logger']; // $logger = new \Monolog\Logger($settings['name']); // $logger->pushProcessor(new \Monolog\Processor\UidProcessor()); // $logger->pushHandler(new \Monolog\Handler\StreamHandler($settings['path'])); // return $logger; // }; // // fail // // $container['cookie'] = function($c){ // // return new \Slim\Http\Cookies; // // }; // // fail // // $container['cookie'] = function($c){ // // $request = $c->get('request'); // // return new \Slim\Http\Cookies($request->getCookieParams()); // // }; // $container['session'] = function(){ // return new \SlimSession\Helper; // }; // $container['flash'] = function(){ // return new Slim\Flash\Messages(); // }; // if(IS_LIVE_SERVER and !IS_DEVELOPER){ // $container['errorHandler'] = function ($c) { // return function ($request, $response) use ($c) { // return $c['response'] // ->withStatus(500) // ->withHeader('Content-Type', 'text/html') // ->write('Something went wrong!'); // }; // }; // } //end if(IS_LIVE_SERVER and !IS_DEVELOPER){ // $container['notFoundHandler'] = function ($c) { // return function ($request, $response) use ($c) { // return $c['response'] // ->withStatus(404) // ->withHeader('Content-Type', 'text/html') // ->write('Page not found'); // }; // };