我不知道为什么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();