如何查看CI3是否加载了默认配置?

How to check if the default configuration has been loaded in CI3?

我正在为要在 CI3.1 (CodeIgniter 3.1) 中使用的项目开发自定义库。这是一段代码:

class NavigationMenu
{
    protected $CI;

    public function __construct($params = ['config' => 'navigation'])
    {
        $this->CI =& get_instance();
        $this->CI->load->helper('url');  
        $this->CI->config->load($params['config'], true);
        $this->CI->load->model('nav_model', 'nav');
    }
    ....
}

默认配置“navigation.php”文件具有以下代码:

$config['navigation_open']          = '<ul class="nav">';
$config['navigation_close']         = '</ul>';
$config['item_open']                = '<li>';
$config['item_open_active_class']   = 'active';

如您所见,我正在加载 url 帮助程序、navigation 配置文件和 nav_model 模型。有没有办法检查它们之前是否已加载?可能是我想节省时间然后按如下方式设置 autoload.php 的情况:

$autoload['helper'] = ['url'];
$autoload['config'] = ['navigation'];
$autoload['model']  = ['nav_model'];

如果是这样,我该如何检查是否已加载以便不再尝试加载?

我查看了 config class 的文档,但找不到任何有用的东西

您可以检查 url 助手中的任何功能目前是否可用,因此您将能够了解是否加载了助手,或者您应该自己完成:

if(!function_exists('site_url'))
    $this->CI->load->helper('url');  

如果您需要检查是否加载了任何帮助程序,这是一个简单的技巧,但不太清楚如何检查 config/model 是否已加载,所以如果您真的想创建自己的自动加载器,您需要对核心对象进行类似的检查($this->CI):

if(!method_exists($this->CI,'nav'))
     $this->CI->load->model('nav_model', 'nav');