devpontes / route
Simples componente de rotas para projetos pequenos baseados em MVC
Requires
- php: >=8.0
README
About Route componet
Route is a simple and lightweight route management component designed for small projects based on MVC architecture.
O Route é um componente simples e leve de gerenciamento de rotas, projetado para pequenos projetos baseados em arquitetura MVC.
Highlights
- Suporte a rotas nomeadas. (named routes)
- Modo estrito para diferenciação de URLs. (strict mode)
- Configuração simples e intuitiva. (simple to set up)
- Padrão de rota: controller/method/{parameter}.
Instalação
Installation is available through Composer:
"devpontes/route": "3.*"
or run
composer require devpontes/route
Documentation
1. Configuração
To use Route, all application requests must be redirected to the index.php file, which will act as the Front Controller. Example using Apache (.htaccess)
Para utilizar o Route, todas as requisições da aplicação devem ser redirecionadas para o arquivo index.php, que atuará como o Front Controller. Exemplo usando o Apache (.htaccess):
Apache
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
2. Definição de Rotas
Routes must be defined in an array in the format [path, controller@method]
As rotas devem ser definidas em um array no formato [path, controller@method]:
$routes = [ ['/', 'Home@index'], ['/blog', 'Blog@index'], ['/contato', 'Contact@index'], ['/contato/{id}', 'Contact@index'], ['/not-found/404', 'Notfound@index'], ];
3. Captura da URL
The request URL must be captured and passed to the component in the constructor or via the setter method.
A URL da requisição deve ser capturada e passada ao componente no construtor ou via metodo setter. Exemplo com servidor Apache:
$url = $_GET['url'];
ou usando a pasta publica
$url = $_SERVER['REQUEST_URI'];
4. Inicialização
On component initialization: 1 - Enter the routes array; 2 - Configure the controllers' namespace (the same as defined in composer.json); 3 - Run with the run() method.
Na inicialização do componente:
- Informe o array de rotas.
- Configure o namespace dos controladores (mesmo definido no composer.json).
- Execute com o método run().
Usage
$route = new \DevPontes\Route\Route($routes); $route->setUrl($url); $route->namespace("App\Controller"); $route->run();
5. Tratamento de Erros
To capture unconfigured routes, use the fail method
Para capturar rotas não configuradas, utilize o método fail:
if ($route->fail()) { header('Location: /not-found/404'); }
6. Modo Estrito
Strict mode differentiates between routes with and without trailing slashes.
O modo estrito diferencia rotas com e sem barra final. Exemplo:
- /sobre ≠ /sobre/ (strict mode enabled).
- /sobre = /sobre/ (strict mode disabled).
Enabling/disabling
$route->setStrictMode(true);
Credits
- Moises Pontes (Developer)
License
The MIT License (MIT).