discuz的程式碼分析學習(四)論壇入口文件
只是大致分析下執行流程,主要就是取得mod參數的值,根據取值載入控制器,控制器位置在最後一行指定了。
1 )定義應用程式名稱,載入兩個必要檔案
<span>define</span>('APPTYPEID', 2<span>); </span><span>define</span>('CURSCRIPT', 'forum'<span>); </span><span>require</span> './source/class/class_core.php';<span>//</span><span>核心类</span> <span>require</span> './source/function/function_forum.php';<span>//</span><span>论坛函数库</span>
2 )modarray數組限定了mod取值範圍
<span>$modarray</span> = <span>array</span>('ajax','announcement','attachment','forumdisplay', 'group','image','index','medal','misc','modcp','notice','post','redirect', 'relatekw','relatethread','rss','topicadmin','trade','viewthread','tag','collection','guide'<span> ); </span><span>//</span><span>模块缓存列表,各个子数组分别表示各个模块要缓存的缓存项</span> <span>$modcachelist</span> = <span>array</span><span>( </span>'index' => <span>array</span>('announcements', 'onlinelist', 'forumlinks', 'heats', 'historyposts', 'onlinerecord', 'userstats', 'diytemplatenameforum'), 'forumdisplay' => <span>array</span>('smilies', 'announcements_forum', 'globalstick', 'forums', 'onlinelist', 'forumstick', 'threadtable_info', 'threadtableids', 'stamps', 'diytemplatenameforum'), 'viewthread' => <span>array</span>('smilies', 'smileytypes', 'forums', 'usergroups', 'stamps', 'bbcodes', 'smilies', 'custominfo', 'groupicon', 'stamps', 'threadtableids', 'threadtable_info', 'posttable_info', 'diytemplatenameforum'), 'redirect' => <span>array</span>('threadtableids', 'threadtable_info', 'posttable_info'), 'post' => <span>array</span>('bbcodes_display', 'bbcodes', 'smileycodes', 'smilies', 'smileytypes', 'domainwhitelist', 'albumcategory'), 'space' => <span>array</span>('fields_required', 'fields_optional', 'custominfo'), 'group' => <span>array</span>('grouptype', 'diytemplatenamegroup'),<span> );</span>
3 )如果mod參數為空或不合法都會讓表達式為真,導致值為index
<span>$mod</span> = !<span>in_array</span>(C::app()-><span>var</span>['mod'], <span>$modarray</span>) ? 'index' : C::app()-><span>var</span>['mod'];
4 )做初始化
<span>define</span>('CURMODULE', <span>$mod</span><span>); </span><span>//</span><span>var_dump(CURMODULE);</span> <span>$cachelist</span> = <span>array</span><span>(); </span><span>if</span>(<span>isset</span>(<span>$modcachelist</span>[CURMODULE])) {<span>//</span><span>如果当前缓存项存在的话,</span> <span>$cachelist</span> = <span>$modcachelist</span>[CURMODULE];<span>//</span><span>获取当前缓存组的缓存列表项</span> <span>$cachelist</span>[] = 'plugin'<span>; </span><span>$cachelist</span>[] = 'pluginlanguage_system'<span>; } </span><span>if</span>(C::app()-><span>var</span>['mod'] == 'group'<span>) { </span><span>$_G</span>['basescript'] = 'group'<span>; } C</span>::app()->cachelist = <span>$cachelist</span><span>; C</span>::app()->init();<span>//</span><span>初始化</span> <span> loadforum(); set_rssauth(); runhooks();</span>
5 )載入控制器
<span>$navtitle</span> = <span>str_replace</span>('{bbname}', <span>$_G</span>['setting']['bbname'], <span>$_G</span>['setting']['seotitle']['forum'<span>]); </span><span>$_G</span>['setting']['threadhidethreshold'] = 1<span>; </span><span>//</span><span>var_dump($mod);</span> <span>require</span> DISCUZ_ROOT.'./source/module/forum/forum_'.<span>$mod</span>.'.php';
以上就介紹了對discuz的程式碼分析學習(四)論壇入口文件,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

OpenIV是一個受歡迎的遊戲修改工具,主要用於GrandTheftAuto(簡稱GTA)系列遊戲。雖然使用mod能夠為遊戲添加新的功能和改進體驗,但有時候我們可能會因為各種原因需要刪除已安裝的mod。本文將介紹如何使用OpenIV刪除mod。首先,確保已經安裝了OpenIV工具。對於未安裝的用戶,可以從OpenIV官方網站(https://www.ope

《Cyberpunk 2077》的突出功能之一是路徑追踪,但它會對性能造成嚴重影響。即使系統具有相當強大的顯示卡,例如 RTX 4080(Gigabyte AERO OC,亞馬遜上的售價為 949.99 美元),也很難提供穩定的效能。

本月早些時候,一位名為 HowToMen 的 YouTuber 展示了運行 Android 的 Rabbit R1。有了這個模組,原本比手機更分散注意力的裝置就可以像手機一樣發揮作用了。不過,這並不是一件壞事,因為兔子沒有

在玩GrandTheftAutoV等遊戲時,許多玩家都喜歡使用Mod來增加遊戲的樂趣和可玩性。而OpenIV作為一個知名的Mod管理工具,可以簡化Mod的安裝與管理流程。那麼,接下來我們就來了解OpenIV如何加入Mod吧。首先,你需要確保已經下載並安裝了OpenIV。在OpenIV的官方網站(https://openiv.com/)上可以找到

華碩 ROG Ally 配備 40 Wh 電池,通常運行時間約兩小時。然而,在 Ally X 上,華碩將電池升級至 80 Wh,將電池續航時間延長至約 4 小時,具體取決於 TDP。 iFixit 提出了一個

標題:C#中使用Array.Sort函數對陣列進行排序的範例正文:在C#中,陣列是一種常用的資料結構,經常需要對陣列進行排序運算。 C#提供了Array類,其中有Sort方法可以方便地對陣列進行排序。本文將示範如何使用C#中的Array.Sort函數對陣列進行排序,並提供具體的程式碼範例。首先,我們要先了解Array.Sort函數的基本用法。 Array.So

2024開年最大黑馬《幻獸帕魯》於近日登陸了Steam搶先體驗後便不斷地的刷新紀錄,不僅銷量突破500萬份。這款遊戲的線上人數高峰再創新高,突破了158萬人(1,582,482人)!這成績也讓《幻獸帕魯》成為了Steam史上線上人數最高的遊戲TOP3!僅次於《絕地求生大逃殺》(325萬)和《CS2》(181萬)!另外,《幻獸帕魯》也已經有了第一位玩家自製的《寶可夢》Mod,該Mod能將玩家變成小智,並將所有帕魯變成寶可夢。開年神作! 3天銷量突破500萬份別錯過!點選https://www.17

利用MySQL的MOD函數求模運算的餘數在MySQL資料庫中,MOD函數可以用來進行模運算,也就是求兩個數的餘數。本文將介紹如何使用MOD函數進行模運算,並給出對應的程式碼範例。 MOD函數的語法如下:MOD(N,M)其中,N和M是要進行模運算的兩個數,N為被除數,M為除數。 MOD函數傳回N除以M的餘數。以下是一個簡單的範例,展示如何使用MOD函數求兩個數的餘數
