PHP的include()和require()是兩種包含外部文件的方法,對於這兩種方法有什麼區別,不少初學者可能不是很明白。下面總結一下PHP include()和require()的區別:php
1:加載失敗的處理方式不一樣:html
include()會產生一個警告,而require()則致使一個致命的錯誤(出現錯誤,腳本中止執行)編程
require() :若是文件不存在,會報出一個fatal error.腳本中止執行ide
include() : 若是文件不存在,會給出一個 warning,但腳本會繼續執行函數
這裏特別要注意的是:使用include()文件不存在時,腳本繼續執行,這種狀況只出如今PHP 4.3.5以前性能
推薦使用require_once()和include_once(),能夠檢測文件是否有重複包含。測試
2.php性能ui
對include()來講,在 include()執行時文件每次都要進行讀取和評估;spa
而對於require()來講,文件只處理一次(實際上,文件內容替換了require()語句)。.net
這就意味着若是有包含這些指令之一的代碼和可能執行屢次的代碼,則使用require()效率比較高。
另外一方面,若是每次執行代碼時相讀取不一樣的文件,或者有經過一組文件疊代的循環,就使用include(),
由於能夠給想要包括的文件名設置一個變量,當參數爲include()時使用這個變量。
3.二種方式提供不一樣的使用彈性。
require 的使用方法如 require("./inc.php"); 。一般放在 PHP 程式的最前面,PHP 程式在執行前,就會先讀入 require 所指定引入的檔案,使它變成 PHP 程式網頁的一部份。
include 使用方法如 include("./inc/.php"); 。通常是放在流程控制的處理區段中。PHP 程式網頁在讀到 include 的檔案時,纔將它讀進來。這種方式,能夠把程式執行時的流程簡單化。
require即便在條件位FALSE的時候也會被包含,而include只會在執行到改位置時候纔會去執行。
require_once() 語句在腳本執行期間包括並運行指定文件。此行爲和 require() 語句相似,惟一區別是若是該文件中的代碼已經被包括了,則不會再次包括。require_once()函數的做用和 require() 是幾乎相同的
include_once() 語句在腳本執行期間包括並運行指定文件。此行爲和 include() 語句相似,惟一區別是若是該文件中的代碼已經被包括了,則不會再次包括。include_once()函數的做用和 include() 是幾乎相同的
require_once的做用是會檢查以前是否加載過該文件,若是沒有加載則加載 若是加載過就再也不次加載,好比某文件定義了一個類型 若是兩次加載該文件會出現錯誤
還信誓旦旦的解釋:include()是有條件包含函數,而require()則是無條件包含函數。
可是這是好久以前的事了,如今的php,require與include確實有區別,筆者測試的是5.3以上版本測試結果以下:
發現這兩種結構除了在性能和在如何處理包含失敗以外,其餘徹底同樣。
1.在性能方面
測試發現當require與include在性能方面差異不大,以爲這方面能夠不用考慮(多是我測試的樣例不夠多吧)
eg:
2.在包含錯誤處理方面
在包含失敗 時,include()產生一個警告並繼續執行,而require()則致使一個致命錯誤。換句話說,若是想在遇到丟失文件時中止處理頁面就用 require(),不然就用include()。
補充:include,require包含做用域
文件a2.inc
結果截圖以下:
1.全部在被包含文件中定義的函數和類在被包含後,在包含文件裏都具備全局做用域
2.被包含文件的變量的做用域,隨着包含位置的變化而變化。好比若是是在函數中包含,被包含文件的變量是局部變量
備註:搞編程,要有一顆嚴謹負責的心
以上就是PHP include()和require()方法的區別。