首頁 後端開發 php教程 discuz的程式碼分析學習(四)論壇入口文件

discuz的程式碼分析學習(四)論壇入口文件

Aug 08, 2016 am 09:28 AM
array mod

只是大致分析下執行流程,主要就是取得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教程有興趣的朋友有所幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

怎樣在OpenIV中卸載/刪除MOD 怎樣在OpenIV中卸載/刪除MOD Feb 18, 2024 pm 04:25 PM

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

全新優化路徑追蹤模組讓《Cyber​​punk 2077》效能提升高達 40% 全新優化路徑追蹤模組讓《Cyber​​punk 2077》效能提升高達 40% Aug 10, 2024 pm 09:45 PM

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

Rabbit R1經過改裝可以運行遊戲,性能比預期更好 Rabbit R1經過改裝可以運行遊戲,性能比預期更好 Jun 29, 2024 am 07:50 AM

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

openiv怎麼加mod openiv怎麼加mod Feb 22, 2024 pm 09:54 PM

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

DIY 華碩 ROG Ally mod 將電池容量增加近一倍,且不留下任何裸露的東西 DIY 華碩 ROG Ally mod 將電池容量增加近一倍,且不留下任何裸露的東西 Aug 20, 2024 am 06:57 AM

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

使用C#中的Array.Sort函數對陣列進行排序 使用C#中的Array.Sort函數對陣列進行排序 Nov 18, 2023 am 10:37 AM

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

《幻獸帕魯》同時在線破158萬! 《寶可夢》MOD它來了! 《幻獸帕魯》同時在線破158萬! 《寶可夢》MOD它來了! Jan 23, 2024 pm 06:06 PM

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

利用MySQL的MOD函數求模運算的餘數 利用MySQL的MOD函數求模運算的餘數 Jul 27, 2023 pm 04:48 PM

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

See all articles