include和require區別

include/require/include_once/require_once區別php

參考:https://blog.csdn.net/weixin_38676357/article/details/81673986函數

request 有「須要、需求」的意思,若是沒有獲取的須要的文件,程序將中止執行,並報致命的錯誤。網站

include 表示「包含」,通常在執行過程當中再包文件包含進來,若是要包含的文件不存在,則產生一個警告,而後繼續執行後面的代碼。ui

例如:hello.php 不存在時:.net

include('hello.php'); 
echo 'include test final!';//include報錯,可是會繼續執行,顯示:include test final! 

require('hello.php'); 
echo 'require test final!';//require報錯,中止代碼的執行。

include_once() 語句在腳本執行期間包含並運行指定文件。此行爲和 include() 語句相似,惟一區別是include_once()會先判斷一下這個文件在以前是否已經被包含過,如已經包含,則忽略本次包含。
一般用於嵌套包含的狀況下,想確保它只被包含一次以免函數重定義,變量從新賦值等問題。code

隨着網站愈來愈大,可能會出現重複包含某些文件。這也許不是問題,但又是修改了所包含文件的變量後,卻因爲後面再次包含原來的文件而被覆蓋,可能不但願出現這種狀況。還可能出現另外一個問題,即所包含文件中函數名的衝突。使用require_once就能夠解決這些問題。
require_once函數確保文件只包含一次。在遇到require_once後,後面再試圖包含相同的文件時將被忽略。blog

路徑問題
特別是嵌套包含的時候,必定得注意包含文件的路徑。
好比 A文件包含了B文件,B文件包含了C文件,A,B,C文件都不在同一個文件夾下,這個時候每每很容易出錯誤。
解決方案:可使用 dirname(__FILE__) 語句,這句的意思是得到當前腳本的絕對路徑。如:require_once(dirname(__FILE__).'/config.php');get

相關文章
相關標籤/搜索