PHPackages                             casdorio/annotation-router - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. casdorio/annotation-router

ActiveLibrary

casdorio/annotation-router
==========================

A library to enable route annotations in CodeIgniter 4

1.0.1(1y ago)014[2 PRs](https://github.com/casdorio/AnnotationRouter/pulls)MITPHPPHP ^7.3|^8.0CI passing

Since Oct 24Pushed 4mo ago1 watchersCompare

[ Source](https://github.com/casdorio/AnnotationRouter)[ Packagist](https://packagist.org/packages/casdorio/annotation-router)[ RSS](/packages/casdorio-annotation-router/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (5)Used By (0)

Annotation Router for CodeIgniter 4
===================================

[](#annotation-router-for-codeigniter-4)

**Available in: [English](README.en.md)**

Descrição
---------

[](#descrição)

O **annotation-router** é um pacote para CodeIgniter 4 que permite usar anotações ou atributos em controladores sem modificar a configuração do framework. Com este pacote, você pode definir rotas diretamente nas classes de controle, melhorando a organização e a legibilidade do código.

**Observação**: Este projeto ainda está em fase de testes e desenvolvimento. No entanto, a princípio, está funcionando perfeitamente.

Requisitos
----------

[](#requisitos)

- PHP 8.0 ou superior
- CodeIgniter 4.x

Instalação
----------

[](#instalação)

### 1. Instalar via Composer

[](#1-instalar-via-composer)

Execute o seguinte comando no terminal dentro do diretório do seu projeto CodeIgniter:

```
composer require casdorio/annotation-router
```

Uso
---

[](#uso)

### Definição de Controladores

[](#definição-de-controladores)

Você pode usar tanto anotações quanto atributos para definir controladores e suas rotas. **Caso ambos sejam utilizados, os atributos prevalecerão sobre as anotações.**

#### Usando Anotações

[](#usando-anotações)

```
/**
 * @Controller(path:"api/v1", options:['filter' => 'roles:user,admin'])
 */
class MyController extends BaseController
{
    /**
     * @Route(method:"GET", path:"items", options:['filter' => 'roles:user,admin'])
     */
    public function getItems()
    {
        // Lógica para retornar itens
    }

    /**
     * @Route(method:"POST", path:"items", options:['filter' => 'roles:user,admin'])
     */
    public function createItem()
    {
        // Lógica para criar um item
    }
}
```

#### Usando Atributos

[](#usando-atributos)

```
#[Controller(path: 'api/v2', options: ['filters' => 'roles:user,admin'])]
class MyController extends BaseController
{
    #[Route(method: 'GET', path: 'items', options: ['filters' =>'roles:user,admin'])]
    public function getItems()
    {
        // Lógica para retornar itens
    }

    #[Route(method: 'POST', path: 'items', options: ['filters' => 'roles:user,admin'])]
    public function createItem()
    {
        // Lógica para criar um item
    }
}
```

### Controladores Sem Grupo

[](#controladores-sem-grupo)

Se um controlador não estiver definido como parte de um grupo, ele ainda deve ser adicionado como controlador usando a anotação ou atributo `Controller`.

#### Exemplo de Controlador Simples

[](#exemplo-de-controlador-simples)

```
#[Controller]
class SimpleController extends BaseController
{
    #[Route(method: 'GET', path: 'status')]
    public function status()
    {
        return 'OK';
    }
}
```

### Opções Possíveis

[](#opções-possíveis)

As opções aceitas em `Controller` e `Route` incluem, mas não se limitam a:

- **namespace**: O namespace onde o controlador está localizado.
- **filters**: Um ou mais filtros que devem ser aplicados a este controlador ou método.
- **methods**: Métodos HTTP permitidos para a rota (GET, POST, PUT, DELETE, etc.).
- **options**: Qualquer outra configuração que o roteador do CodeIgniter permita.

### Observações

[](#observações)

- **Detecção de Controladores**: Para que um controlador seja detectado, ele deve ter uma anotação ou atributo `Controller`. Isso se aplica tanto a controladores que definem um grupo quanto a controladores simples sem grupo.
- **Opções**: As opções podem ser utilizadas tanto na anotação `Controller` quanto na anotação `Route`, permitindo passar parâmetros como namespace, filtros, etc.

### Visualização de Rotas

[](#visualização-de-rotas)

Para visualizar as rotas cadastradas, acesse a URL `http://seu_dominio/routes`. As rotas só serão exibidas se o aplicativo estiver em modo de desenvolvimento.

Ambiente de Desenvolvimento
---------------------------

[](#ambiente-de-desenvolvimento)

As rotas só serão exibidas se você estiver em modo de desenvolvimento. Certifique-se de que sua configuração de ambiente esteja definida corretamente para ver as rotas.

Contribuição
------------

[](#contribuição)

Sinta-se à vontade para contribuir para o projeto. Para isso:

1. Faça um fork do repositório.
2. Crie uma nova branch (`git checkout -b feature/nome-da-sua-funcionalidade`).
3. Faça suas alterações e commit (`git commit -m 'Adiciona nova funcionalidade'`).
4. Envie para o seu repositório (`git push origin feature/nome-da-sua-funcionalidade`).
5. Crie um Pull Request.

Licença
-------

[](#licença)

Este projeto está licenciado sob a [MIT License](LICENSE).

###  Health Score

32

—

LowBetter than 71% of packages

Maintenance61

Regular maintenance activity

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

562d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/c81c3fa46c666abdc3820dd14535672bba59e47daad751dd40b787048017b815?d=identicon)[casdorio](/maintainers/casdorio)

---

Top Contributors

[![casdorio](https://avatars.githubusercontent.com/u/2231520?v=4)](https://github.com/casdorio "casdorio (20 commits)")

### Embed Badge

![Health badge](/badges/casdorio-annotation-router/health.svg)

```
[![Health](https://phpackages.com/badges/casdorio-annotation-router/health.svg)](https://phpackages.com/packages/casdorio-annotation-router)
```

###  Alternatives

[codeigniter4/appstarter

CodeIgniter4 starter app

1891.8M](/packages/codeigniter4-appstarter)[hermawan/codeigniter4-datatables

Serverside Datatables library for CodeIgniter4

10943.0k3](/packages/hermawan-codeigniter4-datatables)[agungsugiarto/boilerplate

CodeIgniter4 Boilerplate based on AdminLTE 3 with user management, roles, permissions, ...

1647.7k](/packages/agungsugiarto-boilerplate)[agungsugiarto/codeigniter4-cors

Send CORS Headers in a CodeIgniter 4 application.

6524.6k2](/packages/agungsugiarto-codeigniter4-cors)[jason-napolitano/codeigniter4-cart-module

A basic port of the codeigniter 3 cart module for CodeIgniter 4.

5814.8k](/packages/jason-napolitano-codeigniter4-cart-module)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
