corso https://vola.udemy.com/course/php-mvc-from-scratch/learn/lecture/40931984#overview
filippo.bertilotti
2024-05-17 4ee40e3a4d37aff274b3171294feda19d38f65c5
commit | author | age
c4c562 1 <?php
7301d1 2
9e69c2 3 declare(strict_types= 1);
eab392 4
2ab29e 5 spl_autoload_register(function ($class) {
F 6     require "src/". str_replace("\\", "/", $class). ".php";
7  });
8
9 set_error_handler("Framework\ErrorHandler::handleError");
eab392 10
4ee40e 11 set_exception_handler("Framework\ErrorHandler::handleException");
9e69c2 12
0c028b 13
001175 14 $path = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH);
9e69c2 15 if ($path === false) {
F 16     throw new UnexpectedValueException("Malformed URL: {$_SERVER["REQUEST_URI"]}");
17 }
18
001175 19 $segments = explode("/", $path);
F 20
7301d1 21 $router = new Framework\Router;
2d9ddb 22
0fc0f1 23 $router->add("/admin/{controller}/{action}", ["namespace" => "Admin"]);
2272ef 24 $router->add("/product/{slug:[\w-]+}", ["controller" => "products", "action" => "show"]);
1f822b 25 $router->add("/{title}/{id:\d+}/{page:\d+}", ["controller" => "products", "action" => "showPage"]);
c0c5ce 26 $router->add("/{controller}/{id:\d+}/{action}");
7adeb4 27 $router->add("/home/index", ["controller" => "home", "action" => "index"]);
F 28 $router->add("/products", ["controller" => "products", "action" => "index"]);
29 $router->add("/", ["controller" => "home", "action" => "index"]);
e53a93 30 $router->add("/{controller}/{action}");
4ce2a5 31
2bddb6 32 $container = new Framework\Container;
F 33
75438d 34
3880d4 35 $container->set(App\Database::class, function() {
75438d 36     return new App\Database("localhost", "product_db", "product_db_user", "secret");
3880d4 37 });
95ec24 38
2bddb6 39 $dispatcher = new Framework\Dispatcher($router, $container);
f6df29 40
F 41 $dispatcher->handle($path);
7bc6e3 42