gpt4 book ai didi

codeigniter - 独立的第三方模块

转载 作者:行者123 更新时间:2023-12-04 02:58:36 25 4
gpt4 key购买 nike

我将启动新的 Codeigniter 应用程序并尝试找到一种方法将第 3 方模块源(例如 Tank Auth)与我自己的代码分开,我需要的是设置一个如下所示的文件树:

  • /项目根目录/
    • /system (框架系统 - 完成)
    • /第3方/
      • /距离/
      • /application/(已安装的 3d 方库/模块 - 问题主题)
    • /application/(我的申请 - 完成)
    • /site/(站点根,工作树 - 完成)

使用 index.phpapplication/config/config.php 完成/system /application /site > 设置。

是否有任何正确的方法可以使用配置设置来实现上面的树?我是 Codeigniter 的新手,不知道这是否可行。

最佳答案

对于使用 Codeigniter 的模块化结构,Modular Extensions - HMVC 是首选解决方案:

https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc

对于您的设置,您可以将其添加到您的config.php:

$config['modules_locations'] = array(
// absolute path relative path
APPPATH.'3rd_party/application/' => '../../3rd_party/application/',
);
  • /项目根目录/
    • /系统
    • /第3方/
      • /距离/
      • /申请/
        • tank_auth
        • 我的模块
        • some_other_third_party_code
    • /应用程序/
    • /网站/

“相对路径”是相对于应用程序根目录中的任何子目录,如 modelscontrollershelpers 等。对于在 CI 中的示例,如果您使用:

$this->load->model('../views/some_model');

...这不是您通常会做的事情 - 但这是 HMVC 加载程序的工作方式。 HVMC 可用于加载任何 CI 通常不能从“模块”目录加载的内容。您可以拥有任意数量的不同模块或模块路径。

模块可以(但不是必须)加载 Controller 并充当它们自己的迷你应用程序。您还可以跨模块或从默认应用程序根目录加载依赖项。您仍然可以在模块旁边使用默认的应用程序目录。要指定要从模块路径加载特定 Assets ,只需在路径中包含模块名称:

// Loads the "tank_auth" library (works from the tank_auth module)
$this->load->library('tank_auth');

// Loads the "tank_auth" library (works from anywhere in your application)
$this->load->library('tank_auth/tank_auth');

这也适用于模型、助手等。

要访问 tank_auth/controllers/login 中的 Controller ,您可以使用 URL http://example.com/tank_auth/login。您还可以使用 modules::run() 方法在另一个 Controller 中运行一个 Controller ,这可以让您在自己的逻辑中“包装”模块的 Controller 方法,而无需触及它们:

class my_login extends MX_Controller {
function index() {
modules::run('tank_auth/login');
}
}

它有很好的文档记录,并且已经存在多年。我在我做过的几乎每个 Codeigniter 项目中都使用过 HMVC,我强烈推荐它。

关于codeigniter - 独立的第三方模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13886343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com