對discuz的代碼分析學習(二)首頁文件


如果當前地址欄存在查詢字符,並且是一個數字,條件成立。
 查詢字符:www.baidu.com/index.php?aaa=bbb              aaa=bbb就是查詢字符
如果條件成立,則把home賦值給$_ENV['curapp'] ;  $_ENV可以理解為類似於$_GET的超全局數組。這里的$_ENV['curapp']可以理解為選中的入口文件。
並將一個數組傳遞給$_GET,數組的第一個成員指定了控制器名稱,第二個成員制定了一個叫uid的參數,就是用戶id。 

如果這里的條件成立了,127行的IF語句必定為false,下面一大堆代碼都不用執行,一直跳到137行,直接就加載入口文件。
 

如果第一個IF語句為false 
 

cache_domain.php是系統生成的配置文件。$domain數組是在cache_domain.php文件中聲明的。
 
如果$_ENV['domain']為空,直接將當前選中的應用設置為forum(論壇) ,然后跳到137行。
如果 $_ENV['domain']不為空

25:將當前主機域名按.號拆分為數組。
 
27:將獲取到的域名從第一個.號后一位的位置截取,一直截取到末尾。例如www.baidu.com -> 被截之后 -> baidu.com

 28:如果['domain']['app']不為空,並且是數組,並且當前訪問的域名也是其數組值的一項。則:
 
30:在app數組中找到值為當前域名的鍵,作為選中的應用。比如當前訪問的域名為www.baidu.com而且在app數組中找到了這一項:
 
那么$_ENV['curapp']的值就為home。

如果當前選中的應用是mobile(手機) ,$_ENV['curapp']重置為forum
 
如果當前選中的應用是default或者當前選中的應用在默認應用數組中不存在,則把當前選中的應用賦值為空。 
 

37:這個條件會在設置根域名,並且當前訪問的也是這個根域名之后成立。



44:這一行的條件不知道什么情況下會成立。搞了好幾遍list數組始終為空。下面的IF語句也不會執行,暫時不清楚list數組干嘛用的。

74:如果當前訪問的域名是二級域名,並且這個二級域名不是保留域名,這個條件就會成立,checkholdmain函數用來檢查是否是保留域名。
 
75:獲取域名前綴 
76:獲取根域名
77:加載框架入口文件
 
這一串代碼看得出來是初始化操作。這些都是discuz_application類的屬性。
 
85:這行代碼會通過table_common_domain類查詢數據庫,找到根域名綁定的應用類型。fetch_by_domain_domainroot

 


 如果應用類型為home如何如何,如果應用類型為group如何如何。

大致分析
圖片


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM