数据层
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(); }
注意:开启表缓存后,所有数据的更新、插入和删除都需要更新相关的缓存(使用基类的更新操作会自动更新缓存)
更多建议: