我有一段代码,它是CI 3.1自定义库的一部分:
class NavigationMenu
{
protected $CI;
public function __construct($params = ['config' => 'navigation'])
{
// this is where I read $params as an array of 10 values
// and it shouldn't be since $params has only one key = config
var_dump($params);
$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';
我注意到$params
传递给构造函数的内容为:
array (size=10)
'navigation_open' => string '<ul class="nav">' (length=16)
'navigation_close' => string '</ul>' (length=5)
'item_open' => string '<li>' (length=4)
'item_open_active_class' => string 'active' (length=6)
为什么不读为?
array (size=1)
'config' => string 'navigation' (length=10)
编辑
我没有使用库,这意味着没有创建对象,而是自动加载了库,简单如下:
config/autoload.php
$autoload['config'] = ['navigation'];
每当我点击应用程序的index.php文件时,这都将导致类构造函数被调用。
这是CI的默认行为吗?从PHP构造函数开始,我还不知道吗?还是我的代码出了点问题,但我没有看到呢?
您应该$this->CI->config->set_item($params['config'], true)
改用。请仔细阅读本文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句