对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

《赛博朋克 2077》的突出功能之一是路径追踪,但它会对性能造成严重影响。即使系统具有相当强大的显卡,例如 RTX 4080(Gigabyte AERO OC,亚马逊上的售价为 949.99 美元),也很难提供稳定的性能。

本月早些时候,一位名为 HowToMen 的 YouTuber 展示了运行 Android 的 Rabbit R1。有了这个模组,原本比手机更分散注意力的设备就可以像手机一样发挥作用了。不过,这并不是一件坏事,因为兔子没有

华硕 ROG Ally 配备 40 Wh 电池,通常运行时间约为两个小时。然而,在 Ally X 上,华硕将电池升级至 80 Wh,将电池续航时间延长至约 4 小时,具体取决于 TDP。 iFixit 提出了一个

在玩GrandTheftAutoV等游戏时,许多玩家都喜欢使用Mod来增加游戏的乐趣和可玩性。而OpenIV作为一个知名的Mod管理工具,可以简化Mod的安装和管理过程。那么,接下来我们就来了解一下OpenIV如何加入Mod吧。首先,你需要确保已经下载并安装了OpenIV。在OpenIV的官方网站(https://openiv.com/)上可以找到

标题: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函数求两个数的余数
