做網站,我們是認真的!

網站適配電腦+手機端,僅1280元,送2000M阿里云服務器,送com域名+免費備案
網站前端采用靜態系統顯示,后端動態管理,我們承諾網站包收錄,完成網站之后把源碼給客戶!

觀點

互聯網+時代,說建站,談運營與網絡營銷

織夢58教你如何使用織夢dedecms小助手

時間:2020-12-21

很多的時候,織夢dedecms是不能滿足我們要求的,比如我們要增加個織夢dedecms 沒有功能,例如,我們要調用分類信息三級聯動里面的內容,以前我們要寫個函數放在/include/extend.func.php里面,然后,在我們的首頁,或其它而面引入comm.inc.php文件,即可調用這個函數,功能就這樣實現了,只要會php編程什么功能都可以在織夢的基礎上擴展。

  現在不僅僅有這個extend.func.php文件了,織夢幫我們提供了一個叫小助手的功能,從字面意思理解,小助手就是幫助我們的人助手,沒有錯,在include/helpers里面有很多的小助手文件,只要我們的以后擴展功能直接在這里建立一個文件命名為:起的名字.helper.php,然后再在要調用的文件里用helper('起的名字')進行初始化,即可調用起的名字.helper.php這個文件里面的功能了。

一、織夢小助手的應用。

  舉例說明:計算二個數的值。

  定義php文件名:sum.helper.php,然后在這個文件里寫上如下計算二個數的代碼。

<?php

  $a=10;
  $b=33;

  function sum($a,$b){
  return $a+$b;
}

?>

  如果我們要在某個文件例如文件test.php里調用這個功能,我們只需要在這個test.php文件里,用helper('sum')進行初始化一下,即可調用。

  test.php文件內容如下:

require_once(dirname(__FILE__)."/include/common.inc.php");
helper('sum');
echo sum(32,34);

  輸入結果是:66。請注意,無論是用織夢小助手,還是用extend.func.php進行二次開發,都要引入文件common.inc.php文件??棄粜≈值膽镁褪沁@樣簡單。

  對比一下用織夢小助手和extend.func.php進行二次開發的好處。

  如果我們在extend.func.php這個里面進行功能二次開發的話,如果是小的功能還好,如果是代碼特別多,那么,用這個就有缺點了,想一下如果這個文件太多,不僅對于程序員來說感覺亂,在調用功能的時候不容易找,而且這樣也降低了執行效率,本來一個程序員寫好的功能,結果另一個程序員來調用那么,找起來就非常不便,浪費時間。

  而用小助手,而大大提高了效率,不管有多少個人來寫,不管什么樣的誰來調用,只要找到對應的文件名,就可以調用,而且,每個功能對應一個文件,這樣也不至于弄錯,而且調用也非常方便,只需要初始化一下小助手即可。

二、小助手的實現代碼分析。

  織夢小助手既然如此好,我們要研究一下,這個小助手是如何實現的?以后,我們在自己開發中也可以把這種思想用到我們的開發中,提高效率。我們來分析一下小助手是如何實現這樣的功能的。

  首頁要在入口文件common.inc.php里面進行初始化(這里的初始化與上面的提到的helper('sum')初始化不一樣,這里指的是引入helper.inc.php并根據里面的數組創建程序文件)織夢小助手,若文件helper.inc.php存在,則把里面的數組$cfg_helper_autoload,通過helper($cfg_helper_autoload)初始化(這里跟上面提到的初始化一樣),若沒有這個文件,而用默認的。

  代碼如下:

織夢58教你如何使用織夢dedecms小助手
  小助手是如何初始化的?這是重點。小助手正是通過文件common.fuc.php里面下面這段代碼,實現了我們上面舉的例子功能。

織夢58教你如何使用織夢dedecms小助手

  我們分析一下上面的代碼,

  第一句代碼$_helpers = array();這句用來設置一種狀態,在php里面經常用到,常常是true和fault就像電源開關似的,當程序中某個功能執行成功就設置成true,當某個功能沒有執行或某個文件不存在等都可設置成fault這樣就可以在true或fault時執行不同的功能了,程序中經常用到非常方便。

  接下來就開始判斷,我們傳的$helpers是不是數組,例如我們一次開發了多個功能,建立了多個類似: 名字.helper.php的多個文件,在調用初始化helper(數組)時,就需要傳數組,程序會判斷如果傳的是數據,那么進行遞歸調用,當第一個文件假設名為abc.helper.php,當foreach完第一個后,進入到遞歸,再判斷一下$dede的值abc是不是數組不是則向下執行代碼。

     if (isset($_helpers[$helpers]))
    {
        continue;
    }

  這段代碼判斷一下這個文件abc.helper.php,是不是存在并引入了?若已經有了了也引入了,那么,回到foreach里面繼續遍歷,否則接著向下執行,判斷一下abc.helper.php文件是不是存在,若存在,則引入abc.helper.php文件。并把狀態$_helpers[$helpers]設置為真,表明這個文件$_helpers[$helpers]已經引入了,最后一句判斷$_helpers[$helpers]若沒有設置,則打印出文件abc.helper.php無法裝載。

  請注意:此時程序并沒有完成,只是把數組$helpers里面進行了第一個遞歸,接著繼續foreach,接下來程序執行的動作就跟上面的分析的一樣了。這樣通過一個遞歸,就可以把數組里面的代表文件名的鍵全部循環出來,并把對應的文件明引入到要調用的文件里了。

  當我們在要調用的文件里面用helper($helper)初始化后,就開始運行上面的代碼了。作為一個程序員,既要知道是什么,還要知道為什么,本篇內容由織夢DEDECMS基地作的分析,拋磚引玉,共同進步。
0
首頁
案例
關于
聯系
凯时平台