今天在對(duì)dede的問答模塊進(jìn)行修改的時(shí)候發(fā)現(xiàn)直接調(diào)用/include/helpers/archive.helper.php文件中的函數(shù)居然是可行的,但是找遍了ask模塊的所有代碼都沒有發(fā)現(xiàn)這個(gè)是文件如何引入的。我記得有人說過dede的helper文件由系統(tǒng)自動(dòng)引入,不需要自己手動(dòng)完成。但是這個(gè)東西是如何自動(dòng)引入的呢,是所有的地方都能用/include/helpers/目錄下面的所有文件嗎?
答案是否。
官方之所以說/include/helpers/下面的文件自動(dòng)引入 是因?yàn)閐ede的php文件中幾乎都require了/include/common.inc.php這個(gè)初始化文件,而這個(gè)文件中完成了對(duì)所有/include/helpers/下面的文件自動(dòng)引入。相關(guān)代碼如下:
if(file_exists(DEDEDATA.'/helper.inc.php')) { require_once(DEDEDATA.'/helper.inc.php'); // 若沒有載入配置,則初始化一個(gè)默認(rèn)小助手配置 if (!isset($cfg_helper_autoload)) { $cfg_helper_autoload = array('util', 'charset', 'string', 'time', 'cookie'); } // 初始化小助手 helper($cfg_helper_autoload); } |
這段代碼的意思是如果變量$cfg_helper_autoload已經(jīng)存在,則執(zhí)行helper($cfg_helper_autoload);而默認(rèn)是存在的。helper()這個(gè)函數(shù)實(shí)現(xiàn)了具體引入哪些/include/helpers/下面的文件,是哪些呢,這要取決于$cfg_helper_autoload變量的內(nèi)容。
我們看看這個(gè)$cfg_helper_autoload里面有些什么東西。原來這個(gè)變量是在/data//helper.inc.php中定義的:
<?php //小助手配置項(xiàng) $cfg_helper_autoload = array ( 'charset', /* 編碼小助手 */ 'channelunit',/* 模型單元小助手 */ 'string', /* 字符串小助手 */ 'time', /* 日期小助手 */ 'file', /* 文件小助手 */ 'util', /* 單元小助手 */ 'validate', /* 數(shù)據(jù)驗(yàn)證小助手 */ 'filter', /* 過濾器小助手 */ 'cookie', /* cookies小助手 */ 'debug', /* 調(diào)試小助手 */ 'archive', /* 文檔小助手 */ 'upload', /* 上傳小助手 */ 'extend', /* 擴(kuò)展小助手 */ ); ?> |
看到了吧 默認(rèn)引用的helper中已經(jīng)包括了archive文檔小助手,而ask模塊一開始就是require了/include/common.inc.php的,因此一層一層的分析下來,可以得出這樣的結(jié)論,凡是引入和/include/common.inc.php文件的php代碼,都是能直接執(zhí)行默認(rèn)的那幾個(gè)助手小工具里面的代碼的。
版權(quán)聲明: 本站資源均來自互聯(lián)網(wǎng)或會(huì)員發(fā)布,如果侵犯了您的權(quán)益請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除!謝謝!
轉(zhuǎn)載請(qǐng)注明: dede助手小工具h(yuǎn)elper是如何載入的?