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)[abydahana/aksara

Aksara is a CodeIgniter based CRUD Toolkit you can use to build complex applications become shorter, secure and more reliable just in a few lines of code. Serving both CMS or Framework, produce both HEADLESS (RESTful API) or TRADITIONAL (Browser Based), just by writing single controller. Yet it's reusable, scalable and ready to use!

1121.2k](/packages/abydahana-aksara)[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)
