如何检查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 helper、navigation配置文件和nav_model模型。是否有办法检查它们之前是否已经装载过?当我想节省时间,然后按如下方式设置autoload.php时,可能会出现这种情况:

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

如果是这种情况,我如何检查是否已加载,以避免再次加载?

我已经看了配置类的文档,没有找到任何有用的

您可以检查url helper中可用的任何功能,因此您将能够理解helper是否加载或您应该自己做:

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

这是一个简单的技巧,如果你需要检查是否有任何帮助加载,但它不是太清楚如何检查是配置/模型加载,所以如果你真的想创建自己的自动加载器,你需要做类似的检查与核心对象($this->CI):

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