require_once CONTROLLER_DIR . '/RoutingController.php'; require_once CONTROLLER_DIR . '/DatabaseController.php'; require_once MODEL_DIR . '/ImageModel.php'; require_once MODEL_DIR . '/UserModel.php'; session_start(); $connection = new PDO('mysql:host=127.0.0.1;dbname=imagegallery;charset=utf8mb4', 'root', 'emil0609'); $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $container = new Container(); $container->bindArguments('RoutingController', ['connection' => $connection, 'container' => $container]); $container->bindArguments('ImageModel', ['connection' => $connection]); $container->bindArguments('UserModel', ['connection' => $connection]); $router = new Router(); $router->addRoute('GET', '/', ['RoutingController', 'renderLoginView']); $router->addRoute('POST', '/login', ['LoginController', 'login']); $router->addRoute('GET', '/gallery', ['RoutingController', 'renderGalleryView']); $router->addRoute('GET', '/logout', ['LoginController', 'logout']); $router->addRoute('GET', '/upload', ['RoutingController', 'renderUploadView']); $router->addRoute('GET', '/users', ['RoutingController', 'renderUsersView']); $router->addRoute('GET', '/create', ['RoutingController', 'test']); $router->addRoute('GET', '/delete', ['UserModel', 'deleteUser']); $router->addRoute('GET', '/getusers', ['UserModel', 'getUsers']); $router->addRoute('POST', '/createimage', ['ImageModel', 'createImage']); $router->addRoute('GET', '/getimages', ['ImageModel', 'getImages']); $uri = rawurldecode(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)); $route = $router->match($_SERVER['REQUEST_METHOD'], $uri); if ($route == null) { $route = ['handle' => ['ErrorController', 'error404'], 'arguments' => []]; } $controller = $container->create($route['handle'][0]); $container->call([$controller, $route['handle'][1]], $route['arguments']);
/** * @param mixed $definition * * @dataProvider providerCall */ public function testCall($definition) { $di = new Container(); $this->assertInstanceOf('Lebran\\TestServiceProvider', $di->call($definition)); }