Boa tarde.
Estou iniciando em php, mas logo de inicio, estou com problema que não consigo resolver.
Criar um sistema de rotas da seguinte forma:
arquivo de rotas
function load($controller,$action)
{
try {
// se controller existe
$controllerNamespace = "app\\controllers\\{$controller}";
if (!class_exists($controllerNamespace)) {
throw new Exception("O controller {$controller} não existe");
}
$controllerInstance = new $controllerNamespace();
if (!method_exists($controllerInstance, $action)) {
throw new Exception(
"O método {$action} não existe no controller {$controller}"
);
}
$controllerInstance->$action();
} catch (Exception $e) {
echo $e->getMessage();
}
}
$router=[
"GET" => [
"/" => fn () => load("HomeController", "index"),
"/info" => fn () => load("InfoController", "info"),
],
"POST" => [
//"/info" => fn () => load("InfoController", "info"),
],
];
se eu colocar no navegador localhost, da tudo certinho, mas se eu colocar localhost/info sempre retorna
Not Found
The requested URL was not found on this server.
arquivo index
require 'vendor/autoload.php';
require 'app/rotas.php';
try{
$uri=parse_url($_SERVER["REQUEST_URI"])['path'];
$request=$_SERVER['REQUEST_METHOD'];
if(!isset($router[$request]))
{
throw new Exception('A rota não existe0');
}
if(!array_key_exists($uri,$router[$request]))
{
throw new Exception('A rota não existe1');
}
$controller=$router[$request][$uri];
$controller();
}catch(Exception $e)
{
echo "". $e->getMessage() ."";
}