Codeigniter 3.0.2没有从libraries文件夹加载应用程序库


Codeigniter 3.0.2 not loading application library from libraries folder

我不知道为什么codeigniter会显示出这样的行为:

1)我在application/libraries/form文件夹中创建了一个Adminforms.php类。

class Adminforms {
public function displayLoginForm() {
$formOptions = array();
return $formOptions;
}
}

2)当我加载这个库类在一个视图

<? $this->load->library("form/adminforms"); ?>
<? var_dump($this->adminforms); ?>
<?= $this->adminforms->displayLoginForm(); ?>

显示错误:

A PHP Error was encountered
Severity: Notice
Message: Undefined property: CI_Loader::$adminforms

3)我进入了codeigniter的Loader类,并开始观察它的行为。我看到文件路径,类名都可以很好地加载这个库。codeigniter还在_ci_classes (Loader.php第1242行)中设置其名称。但是当它将对象赋值给codeigniter实例

$CI->$object_name = isset($config)
? new $class_name($config)
: new $class_name();

我试图打印这个实例对象$CI->$object_name为我的Adminforms.php库。结果如下:

object(Adminforms)#20 (0) { }

有没有人知道为什么它没有正确加载类对象?

您需要首先获得ci对象,然后使用该对象。ci对象在视图中不可用。理想情况下,你不应该在视图中加载库。Codeigniter遵循MVC模式。业务逻辑应该在Model中,控件应该在控制器中,视图应该在view

$this->ci =& get_instance (  );
$this->ci->load->library("Test/Adminforms");
$this->ci->adminforms->displayLoginForm();