天天看點

php中 include 和 require,include 和 include_once,require和require_once 的差別

require()語句的性能與include()相類似,都是包括并運作指定檔案。

##include()和require()的差別:

####加載次數不一樣

include()

:在執行檔案時每次都要進行讀取和評估;

require()

:檔案隻處理一次(實際上,檔案内容替換

require()

語句)

分析:

  • 如果可能執行多次的代碼,則使用require()效率比較高。
  • 若每次執行代碼時相讀取不同的檔案或者有通過一組檔案疊代循環,就使用include()

####加載方式不一樣

require()

是預加載機制(程式執行之前進行加載),位置一般放在腳本最前面,一開始就引入所有可能用到的檔案;

include()

是即用即加載(執行到它所在的那行代碼時才加載進來)。

分析:

  • include()

    适合條件的引用

例:

$file = "./app.txt";
	if(file_exists($file)){
		include $file;//隻有在檔案存在時才加載
	}
	if(file_exists($file)){
		require $file;//無論檔案存不存在都會加載
	}

           

####報錯類型不一樣

include()

引入檔案時,如果遇到錯誤會提示警告性錯誤(

E_WARNING

)并繼續執行;

require()

引入檔案遇到錯誤時也提示緻命編譯性錯誤(

E_COMPILE_ERROR

)且會終止程式的運作。

分析:

  • PHP系統在加載PHP程式時有一個僞編譯過程,可使程式運作速度加快。
  • incluce的文檔為解釋執行,include的檔案中出錯了,主程式繼續往下執行
  • reuire檔案會把require語句替換成檔案内容,使它成為主程式的一部分,require的檔案出錯了,主程式也就停了

##include 和 include_once,require和require_once 的差別:

  • include()、require()執行即包含檔案,不會對引入的檔案進行檢查(這裡會消耗一些資源,降低執行的效率),可能會出現重複包含的情況;
  • 而include_once()、require_once()在包含時會先檢查檔案是否已經包含過了,如果已包含,則不再包含檔案,這樣的引入檔案方式即可以節省資源,又可避免重複定義的錯誤。