include:將指定的文件讀入並且執行里面的程序;
require:會將目標文件的內容讀入,並且把自己本身代換成這些讀入的內容;
include_once:在腳本執行期間包含並運行指定文件。此行為和 include 語句類似,唯一區別是如果該文件中已經被包含過,則不會再次包含。如同此語句名字暗示的那樣,只會包含一次;
require_once:和 require 語句完全相同,唯一區別是 PHP 會檢查該文件是否已經被包含過,如果是則不會再次包含。
1 include與require的區別
include與require除了在處理引入文件的方式不同外,最大的區別就是:include在引入不存文件時產生一個警告且腳本還會繼續執行,而require則會導致一個致命性錯誤且腳本停止執行。
<?php include 'no.php'; echo '123'; ?>
如果no.php文件不存在,echo '123'這句是可以繼續執行的.
你看到的可能是類似下邊的情況:
<?php require 'no.php'; echo '123'; ?>
如果no.php文件不存在,echo '123'這句是不執行的,在require時就停止了。
你看到的可能是類似下邊的情況:
include()與require()的功能相同,但在用法上卻有一些不同,include()是有條件包含函數,而 require()則是無條件包含函數。
例如在下面的一個例子中,如果變量$somgthing為真,則將包含文件somefile:
if($something){
include("somefile"); }
但不管$something取何值,下面的代碼將把文件somefile包含進文件里:
if($something){
require("somefile"); }
2 include與include_once的區別(require與require_once的區別)
include_once (require_once)語句在腳本執行期間包含並運行指定文件。此行為和 include (require)語句類似,區別是如果該文件中的代碼已經被包含了,則不會再次包含,只會包含一次。include_once(require_once)需要查詢一遍已加載的文件列表, 確認是否存在, 然后再加載。
<?php require '1.php'; require '1.php'; ?>
這種情況下1.php被包含兩次。
<?php require '1.php'; require_once '1.php'; ?>
這種情況下,第二次包含時,是不會進行包含的。
include(require)與include_once(require_once)的抉擇問題
通常:include_once和require_once會有性能上的下降,因為他需要判斷之前是否包含過。一般情況下,也不太需要去考慮,除非這已經影響到你程序的性能了。
如果使用 APC 盡量也不要用include_once,因為apc.include_once_override配置項沒有很好的被實現(詳情百度)。
注1:Alternative PHP Cache (APC)是一種對PHP有效的開放源高速緩沖儲存器工具,它能夠緩存opcode的php中間碼。
require通常使用方法,這個函數通常放在 PHP 程序的最前面,PHP 程序在執行前,就會先讀入 require 所指定引入的文件,使它變成 PHP 程序網頁的一部份。常用的函數,亦可以這個方法將它引入網頁中。
include通常使用方法,這個函數一般是放在流程控制的處理部分中。PHP 程序網頁在讀到 include 的文件時,才將它讀進來。這種方式,可以把程序執行時的流程簡單化。
return 在返回引用的時候加上括號不但效率低而且會造成邏輯錯誤。那么這幾個函數呢?
理論上來說:include和require后面加不加括號對執行結果沒有區別,但是加上括號效率較低,所以后面能不加括號就不加括號。