首页 > 解决方案 > Codeigniter 4 - 在辅助函数中获取实例

问题描述

我怎样才能让 ci4 实例进入辅助函数?$CI =&get_instance(); <- 那是在版本 3 中,这在 Codeigniter 4 版本中是如何进行的?

标签: phpcodeigniter

解决方案


为此做了一个要点。这是一种方法。

  1. 创建一个帮助文件,您可以随意命名。
  2. 将以下代码添加到您刚刚创建的助手中。

帮助文件的内容:即:utility_helper.php

<?php

$CI_INSTANCE = [];  # It keeps a ref to global CI instance

function register_ci_instance(\App\Controllers\BaseController &$_ci)
{
    global $CI_INSTANCE;
    $CI_INSTANCE[0] = &$_ci;
}


function &get_instance(): \App\Controllers\BaseController
{
    global $CI_INSTANCE;
    return $CI_INSTANCE[0];
}
  1. 在您的基本控制器register_ci_instance($this)的最开始调用

  2. 现在你可以get_instance()像 CI3 一样在任何你想要的地方使用:$ci = &get_instance()

我想提三个注意事项

  • 我只在PHP8上测试过。
  • 我不确定&调用时是否需要get_instance。但是,您可以选择使用任何您想要的形式。所以打电话$ci = get_instance()也可以,但你可以$ci = &get_instance()随心所欲。
  • 确保您更改\App\Controllers\BaseController为适当的内容(即:您的基本控制器)。类型提示很棒,因为 IDE 可以理解它们。

推荐阅读