Thinkphp底层源码分析第一章
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Thinkphp底层源码分析第一章
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                首先我們學習此章節的內容大家可能需要有一些基礎才行,接著對PHP內置字符竄數組相關函數會用的比較多一點,當然不太熟悉的朋友,其實可以借助手冊看下去,手冊下載地址我放在了另一篇博客里 鏈接(大家點擊左邊的鏈接兩字可前去下載)。下面我們開始正題:
實際上我們知道,thinkPHP5從一開始最先執行的入口文件為 public下面的index.php,跟以往的TP3有所不同,官網給的友情提示是為了安全起見。那么接下來我們先分析public目錄下的index.php入口文件,如圖所示:
A:定義了一個常量,這里的作用我們會在后面講到。
B:在首次打開此文件時加載了一個同級目錄下的,thinkphp文件夾中的start.php。我們先? ? ? ? 看一下這個thinkphp文件整體結構。
這三個文件夾里面存放的東西分別是,字符格式,thinkphp庫,以及模板樣式(這里放的是一些內置跳轉 默認首頁的樣式),所以以后大家想要改掉一些樣式可以在這里動刀。我們接著來看star.php文件。
? ? ? 這里我們看到文件第一步加載了同級目錄下base.php。
B:靜態調用執行了一個run方法?。那么我們就知道這個方法有可能就在base.php文件中,? ? ? ? 接下來我們去看。下圖為base.php的內容:
下面是他們分別的解釋:
A:這里定義版本常量,具體作用是在命令行執行輸出版本信息時會用到
B:定義THINK_START_TIME常量,microtime函數是PHP內置的,獲取當前時間戳,可以到微秒,如果給定TRUE值,將會返回一個浮點數,這里作用可能是記錄日志等作用吧。
C:定義THINK_START_MEM常量,memory_get_usage函數是獲取內存使用的。如果設? ? ? ? 置為 TRUE,獲取系統分配的真實內存尺寸。如果未設置或者設置為 FALSE,將是? ? ? ? ? ? ? ? ? ??emalloc() 報告使用的內存量。這里大概是會在內置的trace那個東西中用到吧。
D:這里定義文件格式后綴
E:定義文件分隔符,window下面跟Linux下面斜杠不同,DIRECTORY_SEPARATOR是? ? ? ? ? PHP內置常量(顯示系統分隔符)
F:檢測是否存在 否則定義框架路徑常量,也就是這里的thinkphp文件的路徑,緊跟分隔符? ? ? ? 常量DS,因為框架很可能不一定在window下運行,比如Linux的服務器。
G:定義庫文件常量 注意一下這里路徑后都有斜杠,這樣做的好處是為了方便,如果一個加? ? ? ? 一個不加,到最后可能自己也記不清到底加沒加斜杠了,所以這里作者統一都加了斜? ? ? ? ? ? 杠。
H:定義核心路徑常量
I: 定義trait常量
J:定義應用目錄常量 此處在再項目入口文件出已經定義了一次 后面只是為了以防沒有定? ? ? ? ? ?義,用內置變量獲取再加入分隔符
K:定義根目錄常量這里也就是WWW環境下的路徑
L:定義extend擴展目錄常量
M:定義vendor常量 也就是composer載入的那個文件夾
N:定義runtime緩存目錄常量
O:定義日志常量
P:? 定義配置緩存常量
R:定義配置文件常量 這里其實在又是我們需要動態改變一定的配置 比如說驗證碼我在某個? ? ? ? 地方需要配置成5個數字 而其他地方我又不想要(所以通過這常量就可以實現動態配置? ? ? ? ? ? 了)
S:配置文件后綴常量
T:?環境變量前綴常量
接著我們需要注意star.php中的namespace命名空間 這里指的是thinkphp\library\think目錄處。
所以我們再回到start.php文件處,第二個東西APP::run()想必大家都明白了吧,他這里執行了thinkphp\library\think下的App.php文件中的run方法來初始化框架,不知道大家是否還記得整個項目的是可以配置多入口文件的,我們可以指定admin.php訪問到后臺也是在這個App.php文件中實現的。我們再回到base.php文件中,我們接著分析,在最后使用了兩個方法,如下圖:
這個配置文件實際就是在同star.php base.php的convertion.php文件,再通過調用thinkphp\library\think目錄下的config.php類中的set方法實現的配置。
那么今天就先講到這里了,下次我們接著分析,再見各位。
總結
以上是生活随笔為你收集整理的Thinkphp底层源码分析第一章的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 自律训练法 John Sehorz
- 下一篇: 第13章WEB13-JSP模式JDBC高
