Search by

tyto-php / router

viktorleite

Roteador minimalista de alta performance em PHP puro com suporte a atributos, middlewares e cache

v0.0.2 2026-10-27 12:43 UTC

This package is auto-updated.

Last update: 2026-10-27 12:49:06 UTC


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.