功能介紹
- include函數(shù):會將指定的文件讀入并且執(zhí)行里面的程序误算;
- require函數(shù):會將目標(biāo)文件的內(nèi)容讀入,并且把自己本身代換成這些讀入的內(nèi)容迷殿;
- include_once 函數(shù):在腳本執(zhí)行期間包含并運行指定文件一次儿礼。如果該文件中已經(jīng)被包含過,則不會再次包含和運行庆寺;
- require_once 函數(shù):和 require 語句完全相同蚊夫,唯一區(qū)別是 PHP 會檢查該文件是否已經(jīng)被包含過,如果是則不會再次包含懦尝。
include 與 require 的區(qū)別
1.引入文件的方式不同
- include 會讀取指定文件知纷,并執(zhí)行里面的程序壤圃;
- requrire 將目標(biāo)文件內(nèi)容替換自身;
2.當(dāng)引入文件不存在時琅轧,處理行為不同
- include 會產(chǎn)生一個警告伍绳,但腳本會繼續(xù)運行;
- requrire 會導(dǎo)致一個致命錯誤乍桂,并停止運行冲杀;
3.功能相似,執(zhí)行的條件不同
- include 在下面例子中睹酌,只有$val為真权谁,才包含文件file;
if ($val) {
include("file");
}
- requrire 在下面例子中憋沿,不管$val真假旺芽,都會包含文件file;
if ($val) {
require("file");
}
4.通常放置的位置不同
- include 一般放在流程控制的處理部分辐啄,當(dāng)執(zhí)行到include時再讀取文件采章,可將程序流程簡單化;
- requrire 一般放在PHP程序最前面则披,在程序代碼執(zhí)行前共缕,先讀取指定的文件,將其作為程序的一部分士复;
xxx 與 xxx_once 的區(qū)別
- include 和 require 可包含并執(zhí)行多次,如下 file 被包含并執(zhí)行四次:
<? php
require 'file';
require 'file';
include 'file';
include 'file';
?>
- include_once 和 require_once 在包含指定文件前翩活,會先查詢一遍已加載的文件列表阱洪,確認未包含過才進行包含并運行。如下 file1 和 file2 只會被包含并執(zhí)行一次:
<? php
include 'file1';
include_once 'file1';
require_once 'file2';
require_once 'file2';
?>
xxx 與 xxx_once 的抉擇
- 通常
include_once
和require_once
會有性能上的下降菠镇,因為需要查詢是否包含過冗荸。但如果不在循環(huán)體內(nèi),性能影響不會太大利耍。 - 當(dāng)啟用 APC 時蚌本,盡量不要用include_once,因為apc.include_once_override配置項沒有很好的被實現(xiàn)隘梨。
注:Alternative PHP Cache (APC)是一種對PHP有效的開放源高速緩沖儲存器工具程癌,它能夠緩存opcode的php中間碼。
包含函數(shù)后加不加括號
理論上來說:include和require后面加不加括號對執(zhí)行結(jié)果沒有區(qū)別轴猎,但是加上括號效率較低嵌莉,所以后面能不加括號就不加括號。