所以我的问题是,我不知道如何处理未找到的页面,因为如果您执行除第一个路由以外的任何其他操作,则每次添加路由时都会运行路由,它将有2个输出。
Routes.php
database-platform: org.hibernate.dialect.MySQLDialect
Routes.php(类)
Route::set('index.php', function() {
Index::CreateView('Index');
});
Route::set('test', function() {
Test::CreateView('Test');
});
?>
我试图了解如果找不到它该如何处理。
答案 0 :(得分:0)
怎么样?
<?php
class Router
{
public $routes = [];
public function add($route, $function)
{
$this->routes[$route] = $function;
}
public function route($path)
{
$function =
$this->routes[$path] ??
$this->routes['404'] ?? null;
if(is_null($function))
http_response_code(404) && exit('404 Not Found.');
$function->__invoke();
}
}
$router = new Router;
$router->add('foo', function() {
echo 'bar';
});
$router->add('greeting', function() {
echo 'hello earth';
});
$router->route('greeting');
输出:
hello earth
您可以添加所有路由,而不是在每次添加路由时都尝试解析路由。
我简化了Router :: routes数组,将路径用作键。
在解析时,如果找不到路径(索引不存在),它将尝试在routes数组中检查'404'键。未能通过基本404进行响应。