在框架外照亮/路由404


$dispatcher = new IlluminateEventsDispatcher;
$router = new IlluminateRoutingRouter($dispatcher);
$router->get( '/', [ HomeController::class, 'index' ] );
$request = IlluminateHttpRequest::createFromGlobals();
$response = $router->dispatch($request);
$response->send();

当我想去/home时,尝试获得404页面,我无法获得404错误页面,并且只看到Fatal error: Uncaught SymfonyComponentHttpKernelExceptionNotFoundHttpException

另外,我尝试AbstractRouteCollection.php改变handleMatchedRoute方法从

throw new NotFoundHttpException;

require_once( ROOT . DS . "responses" . DS . "error" . DS . "404.php" );

我可以显示404页面,但得到错误Fatal error: Uncaught Error: Call to a member function setContainer() on null

我不知道我能做什么。

composer.json

{
"require": {
"vlucas/phpdotenv": "^5.3",
"google/apiclient": "^2.10",
"facebook/graph-sdk": "5.7.0",
"illuminate/database": "^8.62",
"illuminate/routing": "^8.64",
"illuminate/events": "^8.64"
},
"autoload": {
"psr-4": {
"App\": "app/",
"Config\": "config/"
}
}
}

这个问题的一个可能的解决方案是在声明了所有路由之后添加以下行,以避免影响之前路由的操作:

$router->any('{path?}', function () {
// Return your view or response
return json_encode(['status' => 'fail', 'message' => '404 error']);
})->where('path', '(.*)');

我们说的是任何路径或url都将用我们所说的回答,因此它必须低于项目中必要的路由,如果它是第一个,它将影响其他路由,它们将无法正常工作。