php四種檔案載入語句

2022-05-05 02:36:10 字數 2360 閱讀 9912

1、include

2、require

3、include_once

4、require_once

方法詳解:

include語句包含並執行指定檔案。

requireinclude幾乎完全一樣,除了處理失敗的方式不同之外。require在出錯時產生e_compile_error(編譯致命錯誤 64 編譯時致命性錯。這就像由zend指令碼引擎生成了乙個e_error。) 級別的錯誤。換句話說將導致指令碼中止而include只產生警告(e_warning),指令碼會繼續執行。

include_once語句在指令碼執行期間包含並執行指定檔案。此行為和include語句類似,唯一區別是如果該檔案中已經被包含過,則不會再次包含。如同此語句名字暗示的那樣,只會包含一次。可以用於在指令碼執行期間同乙個檔案有可能被包含超過一次的情況下,想確保它只被包含一次以避免函式重定義,變數重新賦值等問題。

require_once語句和require語句完全相同,唯一區別是php會檢查該檔案是否已經被包含過,如果是則不會再次包含。

總結:includerequire語句都是包含並執行指定檔案,不同的是處理失敗的方式不同,所以一般 require 用於載入重要檔案,比如載入框架的引導檔案,如果出錯將終止程式,include一般用於載入配置檔案或者第三方擴充套件庫等,比如composer就是用的include載入檔案的。

include_oncerequire_once語句與includerequire語句的不同就是,如果該檔案已經包含過就不會再次包含了,這在避免檔案重複載入,函式重定義,變數重新賦值等問題上有用,但是一定程度上會有效能損耗問題,畢竟需要檢查是否載入過。所以一般確定的情況下會優先使用includerequire,而不是include_oncerequire_once語句。

擴充套件知識:

包含檔案的語句會受php.iniinclude_path(;include_path = ".:/php/includes")配置項影響,相關函式:

直接引入(包含)檔案預設是以上面set_include_path設定的目錄為環境目錄,環境目錄找不到再從當前目錄找

/ 表示伺服器根目錄,linux上面直接表示磁碟根目錄,windows下面表示某個磁碟根目錄例如d:\\,realpath()可以返回絕對路徑。

./ 表示當前執行檔案的同級目錄(入口),而不是當前指令碼所在的目錄(include 語句所在指令碼檔案的目錄)

如果以相對於當前指令碼檔案引用檔案請用__dir__常量

注意:第一種情況,請小心了!這個一般表示從當前目錄找,但是什麼是當前目錄呢?這個不同情況是不同的,它會先把當前執行檔案的目錄當成當前目錄,如果找不到,再把當前指令碼所在的目錄當成當前目錄,從當前指令碼所在目錄開始找,如果還找不到就報錯,引入檔案不存在。

所以如果意圖清楚,最好是使用最後兩種方式引入檔案,這樣能減少不必要的麻煩,另外使用絕對路徑比使用相對路徑載入檔案效能更高,這樣能避免系統去解析相對路徑而耗費一些時間。

當前執行檔案,當前指令碼,請注意仔細理解它們的差別,前者作為入口執行,後者則被指令碼通過引用的方式呼叫。魔術常亮\__file\__\__dir\__就是後者的檔名(包含完整的絕對路徑)和目錄。

關於路徑的其他引申

php指令碼這種檔案相互引用包含的關係可和網頁中靜態檔案css中的../路徑不同,css中的路徑之和所在css檔案url路徑相關,和網頁沒有半毛錢關係,網頁只是載入它而已,但是如果css中使用/那情況就不同了,一般/為根網域名稱,再說一遍,靜態檔案中除了/其他的路徑都是相對於當前靜態檔案的,和網頁位址沒有關係。網頁中的.//則是相對於當前url路徑(對於pathinfo也沒有關係,不會受影響,認不出是假目錄的)和根域。

還可以通過註冊自動載入方法來實現自動載入,框架大部分都實現了自動載入,不然手動寫包含語句不利於維護,太麻煩。

php基礎之檔案載入過程 路徑及四種載入關鍵詞區別

使用形式相同,eg.include 目標檔案的路徑 或 include 目標檔案的路徑 含義幾乎相同,只不過在載入失敗或是否需要重複載入方面,含義有所不同 可以載入html或php檔案 以include為例,其他三種載入路徑是一樣的。相對路徑 示例如下 使用相對路徑引入檔案 include page...

php四種演算法

1 插入排序基本思路 將陣列分為兩個區 已排序區和未排序區 假定陣列的第乙個元素處於已排序區,第乙個元素之後的所有元素都處於未排序部分。排序時用到雙層迴圈,外層迴圈用於從未排序部分中取出待排序元素,並逐步縮小未排序部分,內層迴圈用於從已排序部分尋找插入位置 即不斷地從已排序部分尋找比待排序元素大的元...

php讀取四種配置檔案

讀取4中配置的表資訊,現支援php.ini,xml.yaml class settings result result key return result trigger error not yet implemented e user error 引發乙個錯誤 function load 針對ph...