CI 实现控制器对MODEL和类库的按需加载
<?php if (!defined('BASEPATH')) exit('No direct access allowed.');class MY_Controller extends CI_Controller {
public function __construct()
{
$this->init_property();
parent::__construct();
}
protected function init_property()
{
foreach (is_loaded() as $var => $class) {
$this->$var = null;
}
$this->load = null;
}
protected function _is_model($name)
{
if (strpos($name, '_model') !== false) {
return true;
}
return false;
}
public function __get($name)
{
if ($this->_is_model($name)) {
$this->load->model($name);
} else {
$this->load->library($name);
}
return $this->$name;
}
}
?>
/*
$rs = $this->form_validation->run();
$this->post_model->test();
然后其他的控制器继承MY_Controller 类, 在控制器中类库和MODEL直接用就可以了,不需要再手动加载了。
*/
不错,只是性能上有没有影响? diy66 发表于 2013-1-4 16:49 static/image/common/back.gif
不错,只是性能上有没有影响?
性能的问题,可以用CI的benchmark 测一下,这个我还没试 :lol diy66 发表于 2013-1-4 16:49 static/image/common/back.gif
不错,只是性能上有没有影响?
使用的PHP5的魔术方法,性能应该忽略不计,甚至更好,可以测试下,呵呵 一般情况下挺好,性能的影响忽略不计,只是不支持类库和模型有目录的情况 haohailuo 发表于 2013-1-6 09:13 static/image/common/back.gif
一般情况下挺好,性能的影响忽略不计,只是不支持类库和模型有目录的情况 ...
多谢关注, 只要是目录是有规律的,把__get 函数装载model和类库的方式对应修改一下即可,我写的这个只能算是个小思路吧,实际用的时候肯定要做各种对应修改的 这个思路很不错,学习了
页:
[1]