數(shù)據(jù)層

2018-02-07 12:27 更新

dzzoffice可以使用數(shù)據(jù)層來操作數(shù)據(jù)表。


使用數(shù)據(jù)層有以下的優(yōu)點:

  • 結(jié)構(gòu)清晰,便于閱讀

  • 對查詢參數(shù)做了格式化處理,增強(qiáng)了安全性

  • 集中數(shù)據(jù)操作sql語句,便于維護(hù)和更新

  • 實現(xiàn)緩存操作的相關(guān)函數(shù),解決MYSQL自身對高并發(fā)處理的性能瓶頸


使用數(shù)據(jù)層需要滿足以下的條件:

  • 有以table_加上不帶前綴的表名的class文件

  • 操作類class_表名的類繼承dzz_table基類


數(shù)據(jù)層的一些規(guī)范和約定:

  • 一個數(shù)據(jù)表對應(yīng)一個class文件,以table_加上不帶前綴的表名命名,盡量不操作其它表;

  • 使用C::t('tablename')->method()  調(diào)用;

  • 不建議使用$_G、$_POST、$_GET等全局變量(可以以參數(shù)形式帶入或者使用getglobal來獲取全局變量);

  • 關(guān)聯(lián)查詢(JOIN)盡量拆分為單條查詢,不能拆分的放入主表的類中

  • 除數(shù)據(jù)表文件以外,其它文件盡量不要出現(xiàn)SQL語句,便于后續(xù)的數(shù)據(jù)表的維護(hù)和更新

  • 建議方法名:查詢結(jié)果返回一行記錄方法名使用fetch開頭,返回多行記錄方法名使用fetch_all開頭,查詢中使用SQL語句count函數(shù)返回一個數(shù)值的使用count開頭

  • 數(shù)據(jù)表類繼承dzz_table基類,基類實現(xiàn)CURD操作,fetch方法實現(xiàn)了根據(jù)一個主鍵 值得到一行記錄、fetch_all方法實現(xiàn)了根據(jù)一組主鍵值得到多行記錄(二維數(shù)據(jù),主鍵值為 key)、count方法返回了表的總記錄數(shù)據(jù)

  • DB層封裝的函數(shù)實現(xiàn)了addslashes,個別直接寫sql語句的需注意addslashes

  • 基類實現(xiàn)緩存操作的相關(guān)函數(shù),數(shù)據(jù)表類中增加下面的參數(shù)來啟用數(shù)據(jù)緩存(需要服務(wù)器開啟緩存)

//例如: public function __construct() {
		$this->_table = 'app_open';		
		$this->_pk    = 'extid';		
		$this->_pre_cache_key = 'app_open_'; //緩存主鍵名前綴,為空時表示此表不支持緩存	        $this->_cache_ttl =0; 緩存時間,以秒為單位,0表示永久或相關(guān)配置文件中的默認(rèn)值		    parent::__construct();	
	}

 注意:開啟表緩存后,所有數(shù)據(jù)的更新、插入和刪除都需要更新相關(guān)的緩存(使用基類的更新操作會自動更新緩存)


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號