load(); use DI\Container; use Slim\Factory\AppFactory; use Slim\Routing\RouteCollectorProxy; use TorstenHettstedt\TimekeepingApi\Controller\WorkingHoursController; use TorstenHettstedt\TimekeepingApi\Middleware\ErrorHandler; use TorstenHettstedt\TimekeepingApi\Middleware\JsonBodyParserMiddleware; $container = new Container(); $container->set('databases', function () { $dsn = "pgsql:host=${_ENV['DATABASES_HOST']};port=5432;dbname=${_ENV['DATABASES_NAME']}"; return new PDO($dsn, $_ENV['DATABASES_USER'], $_ENV['DATABASES_PASS']); }); AppFactory::setContainer($container); $app = AppFactory::create(); $app->add(new JsonBodyParserMiddleware()); $app->get( '/', 'TorstenHettstedt\TimekeepingApi\Controller\HelloWorldController:read' ); $app->get( '/views/working-hours/weekly', 'TorstenHettstedt\TimekeepingApi\Controller\WorkingHoursViewController:browseWeekly' ); $app->get( '/views/working-hours/monthly', 'TorstenHettstedt\TimekeepingApi\Controller\WorkingHoursViewController:browseMonthly' ); $app->get( '/views/working-hours/yearly', 'TorstenHettstedt\TimekeepingApi\Controller\WorkingHoursViewController:browseYearly' ); $app->group('/working-hours', function (RouteCollectorProxy $group) { $group->get('', WorkingHoursController::class . ':browse'); $group->post('', WorkingHoursController::class . ':creat'); $group->group('/{id:\d\d\d\d-\d\d-\d\d}', function (RouteCollectorProxy $group) { $group->get('', WorkingHoursController::class . ':read'); $group->put('', WorkingHoursController::class . ':update'); }); }); $errorMiddleware = $app->addErrorMiddleware(true, true, true); $errorMiddleware->setDefaultErrorHandler(new ErrorHandler($app)); $app->run();