tyto-php / router
Roteador minimalista de alta performance em PHP puro com suporte a atributos, middlewares e cache
v0.0.2
2026-10-27 12:43 UTC
Requires
- php: >=8.5
Requires (Dev)
- pestphp/pest: 5.x-dev
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
# Router PHP
Um componente de roteamento moderno, ultraleve e de alta performance desenvolvido em PHP puro 8.x+. Ele utiliza **Attributes** nativos para mapeamento de endpoints, suporte a Middlewares, grupos de rotas e compilação de cache para consumo mínimo de memória em ambientes de produção.
# Sumário
- [x] [Sobre o Projeto](#sobre-o-projeto)
- [x] [Pré-requisitos](#pré-requisitos)
- [x] [Instalação](#instalação)
- [x] [Uso](#uso)
- [ ] Documentação
- [x] [Roadmap](#roadmap)
- [x] [Contribuindo](#contribuindo)
- [ ] Agradecimento
- [ ] Colaboradores
- [x] [Licença](#licença)
- [x] [Contato](#contato)
# Sobre o Projeto
> O **Router PHP** foi desenvolvido para resolver a necessidade de um sistema de roteamento desacoplado, sem as dependências pesadas dos frameworks tradicionais. Através de Reflection e PHP Attributes, ele oferece uma sintaxe limpa, declarativa e altamente legível para declarar rotas diretamente nos seus Controllers.
# Pré-requisitos
> Lista de requisitos necessários para rodar a biblioteca e como prepará-los:
- **PHP**: Versão 8.2 ou superior.
- **Composer**: Para gerenciamento do autoloading e testes via Pest.
```bash
composer --version
```
# Instalação
> Para instalar a dependência no seu projeto via Composer:
```bash
composer require tyto/router
```
Para rodar os testes da biblioteca localmente:
```bash
./vendor/bin/pest
```
# Uso
> Exemplo de como registrar rotas usando os atributos do PHP:
```php
use App\Routing\Get;
use App\Routing\Post;
final readonly class BookController
{
#[Get('/books')]
public function index(): string
{
return "Lista de livros";
}
#[Get('/books/{id}')]
public function show(int $id): string
{
return "Exibindo livro {$id}";
}
}
```
E para despachar a requisição em seu `index.php`:
```php
use App\Routing\Router;
$router = new Router();
$router->register(BookController::class);
$router->dispatch($_SERVER['REQUEST_URI'], $_SERVER['REQUEST_METHOD']);
```
# Documentação
> *Para mais exemplos e caso de usos avançados, consulte a documentação detalhada.*
# Roadmap
- [x] Versão 0.0.1: Suporte a Atributos `#[Get]` / `#[Post]`, Middlewares e Route Caching.
- [ ] Versão 0.0.2: Suporte a Injeção de Dependências nativa nos Handlers de Controllers.
- [ ] Versão 0.1.0: Validação automatizada de DTO/Request via atributos.
# Contribuindo
Se você tiver uma sugestão para melhorar o projeto, faça um fork do repositório e crie uma pull request. Você também pode simplesmente abrir uma **issue** com a tag "**melhoria**". Não se esqueça de dar uma estrela ao projeto! Quaisquer contribuições que você fizer são **muito apreciadas.**
1. Fork do projeto
2. Crie sua branch de recurso (`git checkout -b feature/AmazingFeature`)
3. Confirme suas alterações (`git commit -m 'Add some AmazingFeature'`)
4. Empurre para a Filial (`git push origin feature/AmazingFeature`)
5. Abra uma **pull request**
# Agradecimento
> Agradecimentos à comunidade PHP, PHP-FIG e ao ecossistema Pest PHP.
# Contato
Viktor Leite - @ViktorLeite - contato@viktorleite.com
Website - [viktorleite.com.br](https://viktorleite.com.br)
Link do projeto: https://github.com/viktorleite/repo_name
# Licença
> Distribuído sob a licença MIT. Veja `LICENSE.txt` para mais informações.
> O Projeto está disponível sob a Licença MIT. O Projeto também inclui bibliotecas externas que estão disponíveis sob várias licenças. Consulte `LICENSE` para obter mais informações.