下面是Discuz! 的文件目錄及對應的描述。日常的開發中主要會涉及到source和template目錄。雖然目錄和文件都很多,但是實際上結構還是很清晰,大多數情況下通過文件名和目錄就能知道某個文件的作用。比如:
\source\class\discuz\discuz_censor.php 用來處理敏感詞過濾的類 \source\function\function_credit.php 處理積分操作的函數庫 \source\module\forum\forum_viewthread.php 處理帖子顯示頁面的模塊另外,source目錄下的class、function、module、include、admincp這幾個文件夾下的程序文件命名要遵守如下規則:文件名前綴為所在目錄的名字加上下劃線(_) 目錄結構詳細:
/┬── api 外部接口 │ ├── connect 騰訊互聯 │ ├── db UCenter數據庫備份接口 │ ├── google Google引擎使用 │ ├── javascript 數據和廣告的 JS調用 │ ├── manyou manyou應用及搜索等相關服務 │ └── trade 在線支付接口 ├── archiver 論壇靜態化 ├── config 站點配置文件 ├── data 數據緩存及附件 │ ├── attachment 上傳的文件目錄 │ │ ├── album 相冊專用 │ │ ├── block DIY專用 │ │ ├── common 公共上傳 │ │ ├── forum 論壇附件專用 │ │ ├── group 群組圖標和頭部圖片專用 │ │ ├── portal 門戶上傳文件專用 │ │ ├── profile 個人資料專用 │ │ └── temp 臨時文件 │ ├── avatar 視頻認證專用 │ ├── backup 站點數據備份 │ ├── cache 數據緩存 │ ├── diy DIY模塊緩存 │ ├── ipdata Discuz!IP庫 │ ├── log 站點日志,前/後台管理日志、錯誤日志等 │ ├── plugindata 插件緩存數據 │ ├── template 模板緩存目錄 │ └── threadcache 帖子緩存 ├── install 安裝目錄 ├── source 代碼主目錄 │ ├── admincp 後台程序 │ │ ├── cloud Discuz!雲平台 │ │ ├── menu 菜單 │ │ └── moderate 審核功能 │ ├── archiver 論壇靜態化功能代碼 │ ├── class 類文件目錄 │ │ ├── adv 站點廣告功能 │ │ ├── block DIY模塊功能文件 │ │ ├── cache 緩存類 │ │ ├── db 數據庫類 │ │ ├── discuz discuz類 │ │ ├── forum 論壇 │ │ ├── helper 存放從function_core分離出來的一部分函數 │ │ ├── lib 工具類的集合類 │ │ ├── magic 道具 │ │ ├── memory 內存類 │ │ ├── secqaa 驗證問答 │ │ ├── table 數據表操作類 │ │ └── task 站點任務功能 │ ├── function 函數文件 │ │ └── cache 緩存功能拆分目錄 │ ├── include 被包含的文件 │ │ ├── collection 淘帖 │ │ ├── cron 計劃任務 │ │ ├── misc 雜項 │ │ ├── modcp 前台論壇管理 │ │ ├── portalcp 前台門戶管理 │ │ ├── post 帖子相關 │ │ ├── search 搜索功能 │ │ ├── space 家園和個人相關功能 │ │ ├── spacecp 個人設置相關 │ │ ├── table 編碼轉換數據 │ │ ├── thread 查看主題相關 │ │ └── topicadmin 前台主題管理 │ ├── language 站點語言包 │ │ ├── adv 廣告 │ │ ├── block DIY模塊 │ │ ├── forum 論壇 │ │ ├── group 群組 │ │ ├── home 家園 │ │ ├── magic 道具 │ │ ├── member 登錄注冊頁面語言 │ │ ├── mobile 手機訪問功能語言 │ │ ├── portal 門戶語言 │ │ ├── ranklist 排行榜語言 │ │ ├── search 搜索 │ │ ├── secqaa 安全問答 │ │ ├── tag 標簽 │ │ ├── task 任務 │ │ └── userapp manyou應用 │ ├── module 功能模塊 │ │ ├── connect 騰訊互聯 │ │ ├── forum 論壇 │ │ ├── group 群組 │ │ ├── home 家園 │ │ ├── member 登錄注冊 │ │ ├── misc 雜項 │ │ ├── portal 門戶 │ │ ├── search 搜索 │ │ └── userapp 應用 │ └── plugin 插件目錄 │ ├── cloudstat Discuz!雲平台 │ ├── myapp Manyou應用 │ ├── myrepeats 馬甲功能 │ ├── QQconnect 騰訊互聯 │ └── soso_smilies 騰訊搜搜表情 ├── static 非PHP文件 │ ├── image 界面圖片 │ ├── js 站點JS腳本 │ ├── space 空間皮膚 │ └── topic 門戶皮膚 ├── template 模板目錄 │ └── default 默認風格 ├── uc_client UCenter客戶端程序 └── uc_server UCenter服務端程序
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); } }
當調用不存在的類的時候就會調用core::autoload方法來加載相應的類文件。所以我們在開發的過程中就要用到某個類的時候就不需要include或者require了。只要對應的類文件存在,並且命名符合規范,直接調用即可。
注意:產品中個別特殊類由於歷史原因無法實現自動加載,需手動處理 include或require
class_core.php是入口啟動文件,主要實現了以下功能:
class C extends core {} class DB extends discuz_database {}