rahpt/ci4modules 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

rahpt/ci4modules

最新稳定版本:v1.0.1

Composer 安装命令:

composer require rahpt/ci4modules

包简介

Easy Modules in Codeigniter 4

README 文档

README

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

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

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

composer require rahpt/ci4modules

Requisito: CodeIgniter 4.3 ou superior.

⚙️ Configuração

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

Padrão:

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

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

<?php

namespace Config;

use Vendor\ModularAutoloader\Config\BaseModules; // ajuste o namespace real

class Modules extends BaseModules
{
    /**
     * Caminho absoluto onde os módulos residem.
     */
    public string $modulesPath = ROOTPATH . 'modules';  // altere nesta linha
}

✨ Como funciona

  1. Boot – um service provider é registrado pelo Composer.

  2. Scan – durante o startup, ele percorre modulesPath (nível 1).

  3. Register – para cada subpasta encontrada, gera dinamicamente uma entrada PSR‑4 no autoloader interno do CI4:

    <AppNamespace>\<ModuleName>\  => <modulesPath>/<ModuleName>/
    
  4. Profit! Controllers, Models, Configs, Helpers etc. do módulo ficam prontos para uso.

🖥️ Exemplo de rotas em um módulo

Modules/Blog/Config/Routes.php

<?php

/** @var \CodeIgniter\Router\RouteCollection $routes */
$routes->group('blog', ['namespace' => 'App\Modules\Blog\Controllers'], static function ($routes) {
    $routes->get('/', 'PostController::index');
    $routes->get('(:segment)', 'PostController::show/$1');
});

Esse arquivo será carregado após o global app/Config/Routes.php.

🤝 Contribuindo

  1. Fork → crie sua branch (git checkout -b feature/minha‑feature)
  2. Commit suas alterações (git commit -m 'feat: nova feature')
  3. Push (git push origin feature/minha‑feature) e abra um Pull Request.

🪪 Licença

Distribuído sob a licença MIT. Consulte LICENSE para detalhes.

📬 Dúvidas?

Abra uma Issue ou escreva para ci4modules@rah.pt.

rahpt/ci4modules 适用场景与选型建议

rahpt/ci4modules 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 7 次下载、GitHub Stars 达 2, 最近一次更新时间为 2025 年 04 月 30 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「modules」 「codeigniter4」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 rahpt/ci4modules 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 rahpt/ci4modules 我们能提供哪些服务?
定制开发 / 二次开发

基于 rahpt/ci4modules 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 7
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 18
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: mit
  • 更新时间: 2025-04-30