PHPackages                             rahpt/ci4modules - 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. [Framework](/categories/framework)
4. /
5. rahpt/ci4modules

ActiveCodeigniter4-module[Framework](/categories/framework)

rahpt/ci4modules
================

Easy Modules in Codeigniter 4

v1.0.1(1y ago)27mitPHPPHP ^8.2

Since Apr 30Pushed 11mo ago2 watchersCompare

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

READMEChangelogDependencies (1)Versions (4)Used By (0)

CodeIgniter4 Modular Autoloader
===============================

[](#codeigniter4modularautoloader)

Torne qualquer projeto **CodeIgniter 4** verdadeiramente modular – sem precisar editar `app/Config/Autoload.php` a cada novo módulo.

---

🐞 Problema – por que o autoloader “nativo” não basta
----------------------------------------------------

[](#problema-por-que-o-autoloader-nativo-não-basta)

O CodeIgniter 4 segue estritamente a especificação **PSR‑4**, na qual **cada** raiz de *namespace* precisa apontar para **um** diretório físico.
Isso traz duas limitações práticas quando tentamos organizar a aplicação em múltiplos módulos:

1. **Cadastro manual de cada módulo**
    Para que o autoloader reconheça um novo módulo é preciso abrir `app/Config/Autoload.php` e acrescentar mais uma linha à matriz `$psr4`, por exemplo:

    ```
    'App\Blog'  => ROOTPATH . 'Modules/Blog',
    'App\Admin' => ROOTPATH . 'Modules/Admin',
    // … +1 linha por módulo
    ```

    Em projetos com dezenas de módulos isso vira um festival de entradas repetitivas – e cada *merge* ou *deploy* fica sujeito a conflitos ou esquecimentos.
2. **Subpastas NÃO são reconhecidas automaticamente**
    Uma tentativa ingênua de “mapear tudo de uma vez” como:

    ```
    'App\Modules' => ROOTPATH . 'Modules',
    ```

    não funciona: o autoloader passa a considerar **Modules** o namespace raiz e **para de descer** para `Modules/Blog`, `Modules/Admin`, etc.
    O resultado é que classes, helpers e até `Config/Routes.php` **não são encontrados**, gerando erros *404* ou **Class not found**.

> **Resumo:** cada novo módulo exige intervenção manual em arquivo de configuração e qualquer esquecimento quebra a aplicação. Escalar (ou simplesmente clonar) um projeto modular torna‑se trabalhoso e propenso a erros.

---

🚀 Solução
---------

[](#solução)

Este pacote Composer, faz alterações simples que altera o autoloader de modo a fazer uma varredura recursiva em qualquer pasta de módulos que você definir (por padrão: `APPPATH/Modules`). Cada subpasta de primeiro nível vira um **módulo autônomo** com sua estrutura própria `Controllers/`, `Models/`, `Views/`, `Config/Routes.php` etc. – sem necessidade de alterar manualmente o `Config/Autoload.php`.

```
my‑project/
├── app/
│   └── …
└── Modules/            ← pasta monitorada
    ├── Blog/           ← módulo 1
    │   ├── Controllers/
    │   ├── Models/
    │   ├── Views/
    │   └── Config/Routes.php
    └── Admin/          ← módulo 2
        └── …

```

---

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

[](#instalação)

```
composer require rahpt/ci4modules
```

> **Requisito:** CodeIgniter 4.3 ou superior.

---

⚙️ Configuração
---------------

[](#️configuração)

### 1. Habilitar o *Service Provider*

[](#1-habilitar-o-service-provider)

Após a instalação, execute o comando abaixo para atualizar o arquivo app/Config/Modules.php e escolher a pasta onde seus módulos residirão:

### 2. (Opcional) Alterar o caminho dos módulos

[](#2-opcional-alterar-o-caminho-dos-módulos)

Padrão:

```
APPPATH . 'Modules'   // ou seja, app/Modules
```

Para usar outro local (ex.: `ROOTPATH . 'modules'`), crie ou altere o arquivo `app/Config/ModulesTemplate.php`:

```
