目錄結(jié)構(gòu)
目錄結(jié)構(gòu)
推薦視頻教程----->Discuz插件開發(fā)實戰(zhàn)視頻 Discuz模板制作視頻教程(實戰(zhàn)篇)
下面是Discuz! 的文件目錄及對應(yīng)的描述。日常的開發(fā)中主要會涉及到source和template目錄。雖然目錄和文件都很多,但是實際上結(jié)構(gòu)還是很清晰,大多數(shù)情況下通過文件名和目錄就能知道某個文件的作用。比如:
\source\class\discuz\discuz_censor.php 用來處理敏感詞過濾的類 \source\function\function_credit.php 處理積分操作的函數(shù)庫 \source\module\forum\forum_viewthread.php 處理帖子顯示頁面的模塊另外,source目錄下的class、function、module、include、admincp這幾個文件夾下的程序文件命名要遵守如下規(guī)則:文件名前綴為所在目錄的名字加上下劃線(_) 目錄結(jié)構(gòu)詳細(xì):
/┬── api 外部接口 │ ├── connect 騰訊互聯(lián) │ ├── db UCenter數(shù)據(jù)庫備份接口 │ ├── google Google引擎使用 │ ├── javascript 數(shù)據(jù)和廣告的 JS調(diào)用 │ ├── manyou manyou應(yīng)用及搜索等相關(guān)服務(wù) │ └── trade 在線支付接口 ├── archiver 論壇靜態(tài)化 ├── config 站點配置文件 ├── data 數(shù)據(jù)緩存及附件 │ ├── attachment 上傳的文件目錄 │ │ ├── album 相冊專用 │ │ ├── block DIY專用 │ │ ├── common 公共上傳 │ │ ├── forum 論壇附件專用 │ │ ├── group 群組圖標(biāo)和頭部圖片專用 │ │ ├── portal 門戶上傳文件專用 │ │ ├── profile 個人資料專用 │ │ └── temp 臨時文件 │ ├── avatar 視頻認(rèn)證專用 │ ├── backup 站點數(shù)據(jù)備份 │ ├── cache 數(shù)據(jù)緩存 │ ├── diy DIY模塊緩存 │ ├── ipdata Discuz!IP庫 │ ├── log 站點日志,前/后臺管理日志、錯誤日志等 │ ├── plugindata 插件緩存數(shù)據(jù) │ ├── template 模板緩存目錄 │ └── threadcache 帖子緩存 ├── install 安裝目錄 ├── source 代碼主目錄 │ ├── admincp 后臺程序 │ │ ├── cloud Discuz!云平臺 │ │ ├── menu 菜單 │ │ └── moderate 審核功能 │ ├── archiver 論壇靜態(tài)化功能代碼 │ ├── class 類文件目錄 │ │ ├── adv 站點廣告功能 │ │ ├── block DIY模塊功能文件 │ │ ├── cache 緩存類 │ │ ├── db 數(shù)據(jù)庫類 │ │ ├── discuz discuz類 │ │ ├── forum 論壇 │ │ ├── helper 存放從function_core分離出來的一部分函數(shù) │ │ ├── lib 工具類的集合類 │ │ ├── magic 道具 │ │ ├── memory 內(nèi)存類 │ │ ├── secqaa 驗證問答 │ │ ├── table 數(shù)據(jù)表操作類 │ │ └── task 站點任務(wù)功能 │ ├── function 函數(shù)文件 │ │ └── cache 緩存功能拆分目錄 │ ├── include 被包含的文件 │ │ ├── collection 淘帖 │ │ ├── cron 計劃任務(wù) │ │ ├── misc 雜項 │ │ ├── modcp 前臺論壇管理 │ │ ├── portalcp 前臺門戶管理 │ │ ├── post 帖子相關(guān) │ │ ├── search 搜索功能 │ │ ├── space 家園和個人相關(guān)功能 │ │ ├── spacecp 個人設(shè)置相關(guān) │ │ ├── table 編碼轉(zhuǎn)換數(shù)據(jù) │ │ ├── thread 查看主題相關(guān) │ │ └── topicadmin 前臺主題管理 │ ├── language 站點語言包 │ │ ├── adv 廣告 │ │ ├── block DIY模塊 │ │ ├── forum 論壇 │ │ ├── group 群組 │ │ ├── home 家園 │ │ ├── magic 道具 │ │ ├── member 登錄注冊頁面語言 │ │ ├── mobile 手機(jī)訪問功能語言 │ │ ├── portal 門戶語言 │ │ ├── ranklist 排行榜語言 │ │ ├── search 搜索 │ │ ├── secqaa 安全問答 │ │ ├── tag 標(biāo)簽 │ │ ├── task 任務(wù) │ │ └── userapp manyou應(yīng)用 │ ├── module 功能模塊 │ │ ├── connect 騰訊互聯(lián) │ │ ├── forum 論壇 │ │ ├── group 群組 │ │ ├── home 家園 │ │ ├── member 登錄注冊 │ │ ├── misc 雜項 │ │ ├── portal 門戶 │ │ ├── search 搜索 │ │ └── userapp 應(yīng)用 │ └── plugin 插件目錄 │ ├── cloudstat Discuz!云平臺 │ ├── myapp Manyou應(yīng)用 │ ├── myrepeats 馬甲功能 │ ├── qqconnect 騰訊互聯(lián) │ └── soso_smilies 騰訊搜搜表情 ├── static 非PHP文件 │ ├── image 界面圖片 │ ├── js 站點JS腳本 │ ├── space 空間皮膚 │ └── topic 門戶皮膚 ├── template 模板目錄 │ └── default 默認(rèn)風(fēng)格 ├── uc_client UCenter客戶端程序 └── uc_server UCenter服務(wù)端程序
自動加載
Discuz! X2.5要求PHP版本大于5.1,拋棄了對PHP4的支持,因此支持更多的PHP新特性,自動加載類文件就是其中一個。在class_core.php中有這樣一段代碼:
if(function_exists('spl_autoload_register')) { spl_autoload_register(array('core', 'autoload')); } else { function __autoload($class) { return core::autoload($class); } }
當(dāng)調(diào)用不存在的類的時候就會調(diào)用core::autoload方法來加載相應(yīng)的類文件。所以我們在開發(fā)的過程中就要用到某個類的時候就不需要include或者require了。只要對應(yīng)的類文件存在,并且命名符合規(guī)范,直接調(diào)用即可。
注意:產(chǎn)品中個別特殊類由于歷史原因無法實現(xiàn)自動加載,需手動處理 include或require
class_core.php 流程控制的說明
class_core.php是入口啟動文件,主要實現(xiàn)了以下功能:
- 注冊 autoload 方法和異常處理方法:具體參見自動加載
- C::t 方法的實現(xiàn):通過 C::t 方法來調(diào)用數(shù)據(jù)層對應(yīng)表的對象來實現(xiàn)對數(shù)據(jù)的操作
- memory 的初始化:主要由 discuz_memory 類來實現(xiàn)
- 創(chuàng)建 discuz_application 實例 ( discuz_application 是原來 discuz! X2 的 discuz_core):進(jìn)行核心的初始化操作,主要有加載配置文件、加載環(huán)境變量、連接數(shù)據(jù)庫、加載setting信息、初始化用戶數(shù)據(jù)、session的初始、計劃任務(wù)等
- 簡寫類的映射:將 class core 映射為 C,discuz_database 映射為 DB,僅為方便使用,代碼如下
class C extends core {} class DB extends discuz_database {}
更多相關(guān):
1、Discuz! X2.5 程序目錄結(jié)構(gòu)注釋說明
2、Discuz模板中插件嵌入點顯示位置的注釋圖
3、Discuz x2.5 模板文件中的插件鉤子(插件嵌入點)
4、Discuz! 插件開發(fā)實例講解(抽獎插件)