Blandal 发表于 2017-6-30 17:27:55

ci链式新体验

接手一个其他团队用 laravel 开发的系统,觉得里面有种方式特别喜欢。链式、模型基于数据库。此举让数据库的和模型的操作异常的方便。于是乎想在咱CI上也实现下,当然学艺不精有不正确的地方欢迎指正。如果官方就有这种方式请默默的留言....
上代码:
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, 然后把对应的数据库列加载到模型属性中.
拿个场景来说吧:
用户模块(很多项目需要吧)

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 = '特朗普' ,最后调用提交方法(提交的方法没写)提交到数据库中即可实现更新
没写提交方法只是不知道把这个方法放哪里比较好

Hex 发表于 2017-7-2 16:52:34

感谢分享你的代码!
页: [1]
查看完整版本: ci链式新体验