codecamp

数据层

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,免费阅读超1000+编程语言教程
取消
确定
目录

Dzz系统框架

输入数据处理

数据DB层

安全相关

上传组件

评论组件

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }