wecenter学习笔记-Model读写分离

字数 197阅读 296

该文是wecenter学习笔记的一部分

Model读写分离

所有的具体的Model都从AWS_MODEL派生。

AWS_MODEL依赖core_db对Zend_Db的包装来支持数据库相关的功能,参照:

system/core/db.php

初始化

$this->db['master'] = Zend_Db::factory(load_class('core_config')->get('database')->driver, load_class('core_config')->get('database')->master);

切换数据库

public function setObject($db_object_name = 'master')
{
    if (isset($this->db[$db_object_name]))
    {
        Zend_Registry::set('dbAdapter', $this->db[$db_object_name]);
        Zend_Db_Table_Abstract::setDefaultAdapter($this->db[$db_object_name]);

        $this->current_db_object = $db_object_name;

        return $this->db[$db_object_name];
    }

    throw new Zend_Exception('Can\'t find this db object: ' . $db_object_name);
}

AWS_MODEL提供如下功能

  • 自动添加表前缀
  • 数据库主从切换
  • 基本CRUD
  • 事务处理
  • 脚本执行完后的数据库更新操作
  • 分页查询
  • 基本的统计 count\max\min\sum
  • quote

通过对db操作的封装,方便将所有的查询操作切换到从库,更新使用主库,从而实现读写分离对具体Model的实现者透明。


Controller访问控制实现原理←o→自动引入机制和Autoload

推荐阅读更多精彩内容