diff --git a/index.php b/index.php index 431a44f39118628b7aaa7737fb394b2fa31c2a68..ee5a905f0d1b96f01a4fe55bbd7afa24cb0c2bb3 100644 --- a/index.php +++ b/index.php @@ -1,5 +1,6 @@ <?php +use app\App; use app\base\BaseController; spl_autoload_register(function ($className) { @@ -12,3 +13,5 @@ spl_autoload_register(function ($className) { $class = __DIR__ . "/src/" . "{$className}.php"; include_once($class); }); + +$app = new App(); diff --git a/src/App.php b/src/App.php new file mode 100644 index 0000000000000000000000000000000000000000..98d70b07b2ee61ff68dfac60b10f9b277daac578 --- /dev/null +++ b/src/App.php @@ -0,0 +1,27 @@ +<?php + +namespace app; + +use app\Router; +use app\base\BaseController; +use app\controllers\MainController; +use app\repositories\UserRepository; +use app\services\UserService; + +class App +{ + protected $router; + + function __construct() + { + $this->router = new Router(); + $this->init_router(); + $this->router->dispatch(); + } + + function init_router() + { + $this->router->addRoute('/', MainController::getInstance()); + // $this->router->addRoute('/', new BaseController(new UserService(new UserRepository()))); + } +} diff --git a/src/Request.php b/src/Request.php new file mode 100644 index 0000000000000000000000000000000000000000..ca8c5c38d347cdd9d88e2b5450e433b1e4af3764 --- /dev/null +++ b/src/Request.php @@ -0,0 +1,27 @@ +<?php + +namespace app; + +class Request +{ + public static function getURL() + { + return parse_url($_SERVER['REQUEST_URI'])['path']; + } + + public static function getMethod() + { + return $_SERVER['REQUEST_METHOD']; + } + + public static function getParams() + { + $params = $_SERVER['REQUEST_URI']; + $params = explode("?", $params); + $params = array_slice($params, 1); + if (empty($params)) { + return []; + } + return $params; + } +} diff --git a/src/Router.php b/src/Router.php new file mode 100644 index 0000000000000000000000000000000000000000..731f441d4854377221c5a6fbf6a2b483e991a05d --- /dev/null +++ b/src/Router.php @@ -0,0 +1,31 @@ +<?php + +namespace app; + +use app\controllers; +use app\Request as AppRequest; + +class Router +{ + protected $routes = []; + + function addRoute(string $route, $controller) + { + $this->routes[$route] = $controller; + } + + public function dispatch() + { + $uri = AppRequest::getURL(); + $method = AppRequest::getMethod(); + $params = AppRequest::getParams(); + + if (isset($this->routes[$uri])) { + return $this->routes[$uri]->handle($method, $params); + } + } +} + +// $r = new Router(); + +// $r->dispatch();