首页 后端开发 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

全新优化路径追踪模组让《赛博朋克 2077》性能提升高达 40% 全新优化路径追踪模组让《赛博朋克 2077》性能提升高达 40% Aug 10, 2024 pm 09:45 PM

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

Rabbit R1经过改装可以运行游戏,性能比预期更好 Rabbit R1经过改装可以运行游戏,性能比预期更好 Jun 29, 2024 am 07:50 AM

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

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 提出了一个

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

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

使用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