Codeigniter MVC ->VC | MVC
本帖最后由 ★わ浪漫少帅 于 2013-11-13 16:37 编辑链接:https://github.com/ym1623/codeigniter-restserver
当你用codeigniter的时候是否为经常写一些model而烦扰呢?
现在你无需担心,你写的任何任何控制器都会自动载入相应的model,这些model都在控制器加载完毕后载入, 只会加载一次.
实现在controller中自动载入model的核心代码,无需在models文件夹写model文件
/**
* You can control the $auto_model rest.php to control whether to automatically load model
*/
protected function _init_load_model(){
static $_class;
self::$instance =& $this;
$class = self::$instance->router->class;
if (isset($_class))
{
return $this->{$class} = $_class;
}
switch ($this->config->item('auto_model')) {
case 'auto':
$this->{$class} = $this->model($class);
break;
default:
$this->{$class} = $this->load->model($class.'_model');
break;
}
$_class =& $this->{$class};
}
function model($class){
load_class('Model', 'core');
$model = ucfirst($class).'_Model';
$db = isset($this->_db) ? $this->_db : 'default';
$id = isset($this->id) ? $this->id : 'id';
$tmp_class =
<<<EOT
class {$model} extends MY_Model{
public function __construct() {
\$this->_db = '{$db}';
\$this->primary_key = '{$id}';
parent::__construct();
}
}
EOT;
eval($tmp_class);
return $this->$class = new $model();
}
调用例子:
class Examples extends REST_Controller
{
//如果使用database.php的默认数据库,则不用写该构造函数
/*function __construct()
{
//默认使用的database
$this->_db = '';
//默认使用的database 的键值
$this->primary_key = 'id';
parent::__construct();
}*/
//默认已经加载当前控制器的model
public function model_get(){
$data = $this->example
->select('*')
->join('example2', 'example.id = example2.id')
->get_all();
$this->res(array('data' => $data));
}
//加载其他model层的时候
public function model2_get(){
$data = $this->model('example2')->get_all();
$this->res(array('data' => $data));
}
}
顶一个,看看先。{:soso_e104:} hasylu 发表于 2013-11-14 12:57 static/image/common/back.gif
顶一个,看看先。
这个是REST API codeigniter的代码,Codeigniter的代码修改的我也分享了:http://codeigniter.org.cn/forums/thread-17950-1-1.html
页:
[1]