CI模型扩展成调用即加载(含缓存模式)
关于CI中的模型的标准用法是先要load然后才能使用的,基于这种调用模型的做法长久下来就让paperen觉得麻烦,一开头就得要将用到的模型手动全部load过来,当然这种算是比较苛刻的做法也是有它的理由,毕竟这就清楚这部分引用了哪些模型与减少加载多余模型的机会。
// 加载用户模型 $this->load->model('user'); // 获取所有用户数据 $this->user->all( $per_page, $offset );
CI的模型文档 http://ellislab.com/codeigniter/user-guide/general/models.html
在开始后续内容之前还是声明一下
- 基于Hex的HMVC https://github.com/CodeIgniter/HMVC
- 会降低些少性能
- 不是最好的代码 不排除有bug的可能
调用即加载
paperen想象中要达到的目的就是
// YY一下要实现的调用写法 $this->model_user_all( $per_page, $offset );
我们不需要再先load,调用的时候就会自动加载,格式必须是model_{模型名称}_{方法}( 参数1, 参数2, ... )
如果你觉得这样不适合自己使用就不用往下看了
附带查询缓存的概念
// YY一下要实现的调用写法 $this->model_cache( 'model_user_all', $per_page, $offset );
之前也有一篇关于查询缓存的文章 http://paperen.com/post/ci-querycache-extend
其实就是避免不同模块执行了相同的SQL语句,模块之间的数据完成是可以公用的,而这个querycache就是桥梁,也算是一种解决办法吧,不过在这次扩展中querycache将成为其中的组件,对于我们来说它完全是透明的
强调一下 对插入与更新、删除的动作不要使用查询缓存 paperen在代码中并没有限制这个也就是意味着你可以使用model_cache来完成update、insert、delete等操作,但是这有什么意义呢。。。
最近评论