数据层

2018-02-07 12:27 更新

dzzoffice可以使用数据层来操作数据表。


使用数据层有以下的优点:

  • 结构清晰,便于阅读

  • 对查询参数做了格式化处理,增强了安全性

  • 集中数据操作sql语句,便于维护和更新

  • 实现缓存操作的相关函数,解决MYSQL自身对高并发处理的性能瓶颈


使用数据层需要满足以下的条件:

  • 有以table_加上不带前缀的表名的class文件

  • 操作类class_表名的类继承dzz_table基类


数据层的一些规范和约定:

  • 一个数据表对应一个class文件,以table_加上不带前缀的表名命名,尽量不操作其它表;

  • 使用C::t('tablename')->method()  调用;

  • 不建议使用$_G、$_POST、$_GET等全局变量(可以以参数形式带入或者使用getglobal来获取全局变量);

  • 关联查询(JOIN)尽量拆分为单条查询,不能拆分的放入主表的类中

  • 除数据表文件以外,其它文件尽量不要出现SQL语句,便于后续的数据表的维护和更新

  • 建议方法名:查询结果返回一行记录方法名使用fetch开头,返回多行记录方法名使用fetch_all开头,查询中使用SQL语句count函数返回一个数值的使用count开头

  • 数据表类继承dzz_table基类,基类实现CURD操作,fetch方法实现了根据一个主键 值得到一行记录、fetch_all方法实现了根据一组主键值得到多行记录(二维数据,主键值为 key)、count方法返回了表的总记录数据

  • DB层封装的函数实现了addslashes,个别直接写sql语句的需注意addslashes

  • 基类实现缓存操作的相关函数,数据表类中增加下面的参数来启用数据缓存(需要服务器开启缓存)

//例如: public function __construct() {
		$this->_table = 'app_open';		
		$this->_pk    = 'extid';		
		$this->_pre_cache_key = 'app_open_'; //缓存主键名前缀,为空时表示此表不支持缓存	        $this->_cache_ttl =0; 缓存时间,以秒为单位,0表示永久或相关配置文件中的默认值		    parent::__construct();	
	}

 注意:开启表缓存后,所有数据的更新、插入和删除都需要更新相关的缓存(使用基类的更新操作会自动更新缓存)


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号