亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 建站經驗 > 正文

discuz之C::t 方法

2024-04-25 20:34:37
字體:
來源:轉載
供稿:網友

C::t方法的簡單使用。

一、C::t方法的好處:一是對象清楚,二是對形參格式化處理,三是可集中SQL語句,利于維護,四是安全性更高。

二、具體用法,看下面的例子

假設有一個名為test的插件,其中關于名為tbname的數據表操作的SQL

舊式寫法

a.inc.php

<?php

……

$query = DB::query('select * from '.DB::table('tbname').' where id='.$id);

while($v = DB::fetch($query)){

……

}

……

?>

改造為C::t如下

a.inc.php

<?php

……

$query = C::t('#test#tbname')->fetch_all($id);

foreach($query as $key => $value){

或者將上面的兩行變為一行,以減少行數,如下

foreach(C::t('#test#tbname')->fetch_all($id) as $key => $value){

……

}

……

?>

再新建一個文件夾名為table,放在插件根目錄下,在table中創建一個名為table_tbname.php的類文件(詳見技術文庫的相關說明),該文件的代碼框架如下

table_tbname.php

<?php

if (!defined('IN_DISCUZ')) {

exit('Aecsse Denied');

}

class table_tbname extends discuz_table{

public function __construct() {

$this->_table = 'tbname';

$this->_pk = 'id';

parent::__construct();

}

/*------------在此處構造N多的自定義函數,本例中自定義的函數如下-------------*/

public function fetch_all($id){

return DB::fetch_all('select * from %t where id=%d',array($this->_table,$id));

}

}

?>

C::t的運用有很多變化,但萬變不離其宗,基本骨架就是上面的樣子。

注意:

1、自定義函數中有一個同名函數名fetch_all,雖然名字相同,但內涵不同。本例比較特殊,實際自定義函數名稱你可以隨便起,例如public function ldsjglfdjs($id),不一定非要像技術文庫要求那樣規則命名,當然,規則命名更易于辨認理解維護

2、SQL中應當用格式化語句書寫,以保障安全性,其中的%t代表了對數據表名的格式化,%d代表了對%id的格式化,其中的含義請查詢技術文庫"源DB類的改進",以了解掌握都有哪些格式符及其意義并加以運用。這里要特別注意%s和%i的區別,涉及安全處理問題

3、雖然不是必須,但我仍建議并強調,以數組形參的形式作為DB層封裝函數的第二參數(如果該函數有此參數的話),例如上例中的DB::fetch_all(SQL,array(第一形參,第二形參,...)),某些DB層封裝的函數對于有無$arg這個數組參數有著不同的執行過程,將會影響對該參數中的變量是否進行安全過濾的行為

4、SQL中的格式符一定要和數組形參中的變量一一對應,不能顛倒

5、不提倡舊式的SQL寫法,如DB::fetch_all('select * from '.DB::table('tbname').' where id='.$id),原因見上面的3

6、雖然不是必須,但C::t方法中自定義函數內最好不要使用諸如$_GET、$_POST之類的全局變量,應在C::t之前賦值后傳入,否則,例如在DB::query中使用,如不進行過濾,其安全性將難以保障

7、大多數被DB封裝的常用數據庫操作函數,其參數都將被做安全處理,因此要注意,雖然不是必須避免重復過濾,但應考慮執行效率問題。

8、注意注意再注意,由于大多數被DB封裝的常用數據庫操作函數都要調用內部query函數,相當于在外部直接使用DB::query,而該函數有個特例情況,就是上面3所說,因此特別要考慮有無數組形參,進而加固安全性

9、盡量將SQL集中放在C::t方法的類文件中,避免在應用層等其他文件中使用SQL,這樣能使對象更清晰規范方便維護

官方在source/class/table中已經內置了很多C::t方法,假設在插件設計時所用的方法是官方所沒有的,而官方已創建了一個同名類文件,這時怎么辦?那就按上面例子所示,自己創建一個同名類文件就行了,但應用層一定要用C::t('#插件標識符#不帶前綴的表名')來調用,而不是C::t('不帶前綴的表名')這種方式

閑暇之余多看看source/class/discuz中的discuz_database.php和dizcuz_table.php這兩個重要文件,爛熟其中被DB封裝的常用函數的執行原理和機制,對自如運用C::t和加強安全認識有好處

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色先锋久久影院av| 97久久精品国产| www.亚洲成人| 国产精品欧美一区二区三区奶水| 国产美女扒开尿口久久久| 日韩欧美在线视频免费观看| 国产精品国产福利国产秒拍| 精品国产成人av| 免费不卡在线观看av| 日本久久亚洲电影| 亚洲人成免费电影| 亚洲欧洲在线播放| 亚洲精品第一国产综合精品| 国产欧美在线播放| 日产精品久久久一区二区福利| 国产亚洲一区二区在线| 久久频这里精品99香蕉| 亚洲综合国产精品| 久久国产精品久久久久| 欧美黑人巨大精品一区二区| 欧美性感美女h网站在线观看免费| 亚洲精品免费av| 亚洲精品福利视频| 91免费看国产| 欧美大片免费观看在线观看网站推荐| 日韩精品免费观看| 欧美肥臀大乳一区二区免费视频| 欧洲s码亚洲m码精品一区| 成人久久18免费网站图片| 久久综合色88| 色婷婷久久av| 国产精品免费小视频| 国产精品电影观看| 日韩精品高清视频| 亚洲视频欧美视频| 精品亚洲国产成av人片传媒| 国产欧亚日韩视频| 欧美在线一区二区视频| 久久夜色精品亚洲噜噜国产mv| 国产成人在线一区| 久久综合88中文色鬼| 成人黄色影片在线| 一个人看的www久久| 国产成人综合精品在线| 国模gogo一区二区大胆私拍| 亚洲品质视频自拍网| 欧美激情精品久久久久久蜜臀| 久久大大胆人体| 欧美孕妇性xx| 97福利一区二区| 一本一本久久a久久精品综合小说| 26uuu日韩精品一区二区| 国内精品久久久久久| 97在线看免费观看视频在线观看| 色婷婷av一区二区三区久久| 欧美成人激情视频免费观看| 日韩精品亚洲元码| 亚洲国产精品久久久久| 欧美xxxx做受欧美.88| 亚洲偷熟乱区亚洲香蕉av| 国产精品高潮呻吟视频| 欧美超级免费视 在线| 国产美女久久精品香蕉69| 久久久国产精品一区| 在线日韩精品视频| 久久久久久亚洲精品不卡| 91精品国产亚洲| 红桃视频成人在线观看| 大荫蒂欧美视频另类xxxx| 国产91在线视频| 成人黄色大片在线免费观看| 国产精品三级久久久久久电影| 国产欧美欧洲在线观看| 欧美日韩黄色大片| 九九热精品视频| 亚洲第一免费网站| 中文字幕视频一区二区在线有码| 亚洲精品久久久久中文字幕欢迎你| 91精品在线一区| 国产综合在线观看视频| 精品亚洲一区二区三区在线播放| 亚洲国产高清福利视频| 国模私拍视频一区| 亚洲国产一区二区三区四区| 91老司机精品视频| 亚洲精品自拍第一页| 欧美成人性生活| 97碰碰碰免费色视频| 亚洲天堂第一页| 色综合天天狠天天透天天伊人| 色一区av在线| 亚洲欧美国产日韩天堂区| 久久久免费av| 日韩性生活视频| 精品丝袜一区二区三区| 亚洲精品国产精品久久清纯直播| 欧美激情极品视频| 亚洲成人网久久久| 亚洲aⅴ男人的天堂在线观看| 日韩欧美在线观看视频| 97国产精品人人爽人人做| 色综合视频网站| 日韩中文字幕精品视频| 色综合久久久久久中文网| 亚洲黄页网在线观看| 欧美亚洲成人免费| 中文字幕国内精品| 久久久久999| 亚洲第一综合天堂另类专| 国产网站欧美日韩免费精品在线观看| 国产欧美一区二区三区四区| 日韩国产高清污视频在线观看| 欧美肥臀大乳一区二区免费视频| 欧美性猛交xxxx乱大交| 欧美精品videossex性护士| 日韩av在线免费观看| 日韩av黄色在线观看| 国产综合在线观看视频| 欧美黄色www| 亚洲欧美中文日韩在线| 亚洲综合国产精品| 久久综合久久美利坚合众国| 97欧美精品一区二区三区| 色爱av美腿丝袜综合粉嫩av| 久久免费国产视频| 国产精品国产亚洲伊人久久| 国产视频精品一区二区三区| 日韩中文字幕免费看| 久久国产精品偷| 国产成人亚洲综合91| 韩日精品中文字幕| 久久精品中文字幕| 日韩福利伦理影院免费| 欧美午夜女人视频在线| 国产精品亚发布| 久久人91精品久久久久久不卡| 亚洲在线免费看| 日韩影视在线观看| 国产精品久久久av久久久| 日韩视频免费观看| 亚洲美女在线视频| 久久艳片www.17c.com| 亚洲一区二区福利| 色噜噜狠狠狠综合曰曰曰| 国产不卡一区二区在线播放| 久久久久久久激情视频| 久久视频在线播放| 2019av中文字幕| 青草青草久热精品视频在线网站| 全亚洲最色的网站在线观看| 亚洲已满18点击进入在线看片| 国产精品电影观看| 亚洲精品第一页| 亚洲成色777777在线观看影院| 欧美黑人一级爽快片淫片高清| 国产伦精品免费视频| 色视频www在线播放国产成人| 中文一区二区视频| 日韩免费av一区二区| 成人精品久久一区二区三区| 久久精品免费电影| 久久久久久久久久久国产| 亚洲国产精品人久久电影| www.欧美视频|