我不知道为什么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)我进入了Loader类的codeigniter并开始看到它的行为。我看到文件路径,类名完全可以加载这个库。 codeigniter还在_ci_classes(Loader.php第1242行)中设置其名称。但是当它将对象分配给codeigniter实例时
$CI->$object_name = isset($config)
? new $class_name($config)
: new $class_name();
我尝试为我的Adminforms.php库打印此实例对象$ CI-&gt; $ object_name。我得到了以下信息:
object(Adminforms)#20 (0) { }
有谁知道为什么它没有正确加载类对象?
答案 0 :(得分:1)
您需要首先获取ci对象,然后使用该对象。 视图中没有ci对象。理想情况下,您不应该在视图中加载库。 Codeigniter遵循MVC模式。业务逻辑应该在Model中,控件应该在控制器中,视图应该是,查看
$this->ci =& get_instance ( );
$this->ci->load->library("Test/Adminforms");
$this->ci->adminforms->displayLoginForm();