用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2176|回复: 1
收起左侧

[核心代码 Core] ci链式新体验

[复制链接]
发表于 2017-6-30 17:27:55 | 显示全部楼层 |阅读模式
接手一个其他团队用 laravel 开发的系统,觉得里面有种方式特别喜欢。链式、模型基于数据库。此举让数据库的和模型的操作异常的方便。于是乎想在咱CI上也实现下,当然学艺不精有不正确的地方欢迎指正。如果官方就有这种方式请默默的留言....
上代码:
PHP复制代码
class MY_Model extends CI_Model{
        public $_self = array();
        public function __set($name, $val){
                $this->_self[$name] = $val;
        }
        public function __get($name){
                if(isset($this->$name)) return $this->$name;
                $ci =& get_instance();
                if(isset($ci->$name)){
                        return $ci->$name;
                }
                if(isset($this->_self[$name])) return $this->_self[$name];
                $this->load->model($name);
                return $ci->$name;
        }
}
复制代码

在需要使用的模型中继承 MY_Model, 然后把对应的数据库列加载到模型属性中.
拿个场景来说吧:
用户模块(很多项目需要吧)
PHP复制代码
 
class Users extends MY_Model{
       function __construct(){
                parent::__construct();
                foreach($this->info() as $key => $val) $this->$key = $val;
        }
 
}
 
复制代码

上面的 $this->info() 方法是从数据库中获取当前登录用户并返回的数据集合.
接着在实例化这个用户类的时候,只需要这样 $this->user->name 就可以取到列为 name 的值。
并且修改也很方便啊,$this->user->name = '特朗普' ,最后调用提交方法(提交的方法没写)提交到数据库中即可实现更新
没写提交方法只是不知道把这个方法放哪里比较好

评分

参与人数 1威望 +5 收起 理由
Hex + 5 赞一个!

查看全部评分

发表于 2017-7-2 16:52:34 | 显示全部楼层
感谢分享你的代码!

本版积分规则