corso https://vola.udemy.com/course/php-mvc-from-scratch/learn/lecture/40931984#overview
filippo.bertilotti
2024-05-16 addab242fe3986ab8e76aaa4448609ffbf9616ab
index.php
@@ -1,30 +1,45 @@
<?php
declare(strict_types= 1);
$show_errors = true;
if($show_errors) {
    ini_set("display_errors", "1");
}else{
    ini_set("display_errors","0");
}
spl_autoload_register(function ($class) {
    require "src/". str_replace("\\", "/", $class). ".php";
 });
$path = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH);
if ($path === false) {
    throw new UnexpectedValueException("Malformed URL: {$_SERVER["REQUEST_URI"]}");
}
$segments = explode("/", $path);
$router = new Framework\Router;
$router->add("/admin/{controller}/{action}", ["namespace" => "Admin"]);
$router->add("/product/{slug:[\w-]+}", ["controller" => "products", "action" => "show"]);
$router->add("/{title}/{id:\d+}/{page:\d+}", ["controller" => "products", "action" => "showPage"]);
$router->add("/{controller}/{id:\d+}/{action}");
$router->add("/home/index", ["controller" => "home", "action" => "index"]);
$router->add("/products", ["controller" => "products", "action" => "index"]);
$router->add("/", ["controller" => "home", "action" => "index"]);
$router->add("/{controller}/{action}");
//$router->add("/home/index", ["controller" => "home", "action" => "index"]);
//$router->add("/products", ["controller" => "products", "action" => "index"]);
//$router->add("/", ["controller" => "home", "action" => "index"]);
$container = new Framework\Container;
$params = $router->match($path);
$container->set(App\Database::class, function() {
    return new App\Database("localhost", "product_db", "product_db_user", "secret");
});
if($params === false) {
    exit("No routes matched");
}
$dispatcher = new Framework\Dispatcher($router, $container);
$controller = "App\Controllers\\" . ucwords($params["controller"]);
$action = $params["action"];
$controller_object = new $controller;
$controller_object->$action();
$dispatcher->handle($path);