对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教程有兴趣的朋友有所帮助。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



OpenIV ialah alat pengubahsuaian permainan yang popular, terutamanya digunakan dalam siri permainan Grand Theft Auto (GTA). Walaupun menggunakan mod boleh menambah ciri baharu dan menambah baik pengalaman pada permainan, kadangkala kami mungkin perlu memadamkan mod yang dipasang atas pelbagai sebab. Artikel ini akan menerangkan cara mengalih keluar mod menggunakan OpenIV. Mula-mula, pastikan anda memasang alat OpenIV. Bagi pengguna yang belum memasangnya, anda boleh memuat turunnya dari laman web rasmi OpenIV (https://www.ope

Salah satu ciri menonjol Cyberpunk 2077 ialah pengesanan laluan, tetapi ia boleh menjejaskan prestasi yang teruk. Malah sistem dengan kad grafik berkebolehan yang munasabah, seperti RTX 4080 (Gigabyte AERO OC curr. $949.99 di Amazon), bergelut untuk menawarkan yang stabil

Awal bulan ini, YouTuber bernama HowToMen mempamerkan Rabbit R1 yang menjalankan Android. Dengan mod ini, peranti yang pada asalnya dimaksudkan untuk menjadi kurang mengganggu daripada telefon dapat berfungsi seperti satu. Itu bukan perkara yang buruk, walaupun, kerana Arnab tidak

Asus ROG Ally menampilkan bateri 40 Wh, yang biasanya menghasilkan kira-kira dua jam masa jalan. Pada Ally X, bagaimanapun, Asus menaik taraf bateri kepada 80 Wh, menolak hayat bateri kepada sekitar empat jam, bergantung pada TDP. iFixit menghasilkan a

Apabila bermain permainan seperti Grand Theft Auto V, ramai pemain suka menggunakan Mod untuk meningkatkan keseronokan dan kebolehmainan permainan. Sebagai alat pengurusan Mod yang terkenal, OpenIV boleh memudahkan proses pemasangan dan pengurusan Mod. Jadi, mari kita lihat cara menambah Mod pada OpenIV. Mula-mula, anda perlu memastikan anda telah memuat turun dan memasang OpenIV. Ia boleh didapati di laman web rasmi OpenIV (https://openiv.com/)

Tajuk: Contoh menggunakan fungsi Array.Sort untuk mengisih tatasusunan dalam Teks C#: Dalam C#, tatasusunan ialah struktur data yang biasa digunakan dan operasi pengisihan tatasusunan selalunya diperlukan. C# menyediakan kelas Array, yang mempunyai kaedah Isih untuk menyusun tatasusunan dengan mudah. Artikel ini akan menunjukkan cara menggunakan fungsi Array.Sort dalam C# untuk mengisih tatasusunan dan memberikan contoh kod khusus. Pertama, kita perlu memahami penggunaan asas fungsi Array.Sort. Susunan.Jadi

Kuda hitam terbesar pada awal tahun 2024, "Phantom Parlu" baru-baru ini mendarat di Steam Early Access dan terus mencatat rekod baharu Bukan sahaja telah melebihi 5 juta salinan. Bilangan puncak orang dalam talian untuk permainan ini mencapai tahap tertinggi baharu, melebihi 1.58 juta (1,582,482 orang)! Pencapaian ini juga menjadikan "Eidolon Parlu" menjadi 3 permainan teratas dengan bilangan pengguna dalam talian tertinggi dalam sejarah Steam! Kedua selepas "PlayerUnknown's Battlegrounds" (3.25 juta) dan "CS2" (1.81 juta)! Selain itu, "Eidolon Pallu" juga mempunyai Mod "Pokémon" buatan pemain pertama, yang boleh menukar pemain menjadi Ash Ketchum dan menukar semua Pallu menjadi Pokémon. Karya agung untuk memulakan tahun baru! Jualan melebihi 5 juta salinan dalam masa 3 hari, jangan ketinggalan! Klik https://www.17

Gunakan fungsi MOD MySQL untuk mencari baki operasi modular Dalam pangkalan data MySQL, fungsi MOD boleh digunakan untuk melaksanakan operasi modular, iaitu untuk mencari baki dua nombor. Artikel ini akan memperkenalkan cara menggunakan fungsi MOD untuk melaksanakan operasi modular dan memberikan contoh kod yang sepadan. Sintaks fungsi MOD adalah seperti berikut: MOD(N,M) di mana N dan M ialah dua nombor yang perlu dilakukan operasi modulo, N ialah dividen, dan M ialah pembahagi. Fungsi MOD mengembalikan baki N dibahagikan dengan M. Di bawah ialah contoh mudah yang menunjukkan cara menggunakan fungsi MOD untuk mencari baki dua nombor
