日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

Thinkphp底层源码分析第一章

發布時間:2023/12/20 php 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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底层源码分析第一章的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。