首先要說的是,include、include_once、require、require_once的核心功能都是一樣的,都是相當于把目標網頁的代碼生硬地直接復制過來。
基本上,如果不從性能上考慮,使用include、include_once、require、require_once都可以達到基本的效果?;旧蠍墼趺从镁驮趺从?。
其中的微小差別如下:
例如1.php中有句簡單的打印語句:
<?php echo "1" ?>
<?phpinclude '1.php';require '1.php';include_once '1.php';require_once '1.php';?>
如果寫成:
<?phpinclude_once '1.php';require_once '1.php';include '1.php';require '1.php';?>
值得注意的是,_once雖然表示之前已經引入過的不再引入,但這個語句不會檢查所引入的網頁中的代碼是否相同,比如有兩個代碼一模一樣的網頁untitled.html與untitled1.html皆為:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>無標題文檔</title></head><body></body></html>
<?phpinclude_once 'untitled.html';include_once 'untitled1.html';?>
看到相同的部分出現兩次。_once只是通過文件名來判斷之前已經引入過是否再引入。
因此_once并不能防止不同名卻同一個資源多次引入的現象。
而include與require除了在處理引入文件的方式不同外,最大的區別就是:include在引入不存文件時產生一個警告且腳本還會繼續執行,require則會導致一個致命性錯誤且腳本停止執行。
比如a.php如果不存在,以下的代碼,依舊會輸出b:
<?phpinclude 'a.php';echo 'b';?>而:
<?phprequire 'a.php';echo 'b';?>則不會。
同時還有如下的區別:
include()是有條件包含函數,而 require()則是無條件包含函數
if(FALSE){ include 'file.php'; //file.php不會被引入 } if(FALSE){ require 'file.php'; //file.php將會被引入}include有返回值,而require沒有
$retVal = include(’somefile.php’);if(!empty($retVal)){ echo “文件包含成功”;}else{ echo “文件包含失敗”;}是可以的。
include()執行時需要引用的文件每次都要進行讀取和評估,require()執行時需要引用的文件只處理一次,實際上執行時需要引用的文件內容替換了require()語句,可以看出若有包含這些指令之一的代碼和可能執行多次的代碼,則使用require()效率比較高,若每次執行代碼時相讀取不同的文件或者有通過一組文件疊代的循環,就使用include()。
require通常使用方法,這個函數通常放在 PHP 程序的最前面,PHP 程序在執行前,就會先讀入 require 所指定引入的文件,使它變成 PHP 程序網頁的一部份。常用的函數,亦可以這個方法將它引入網頁中。include通常使用方法,這個函數一般是放在流程控制的處理部分中。PHP 程序網頁在讀到 include 的文件時,才將它讀進來。這種方式,可以把程序執行時的流程簡單化。
另外關于include和require后面是否加括號的問題,理論上來說:include和require后面加不加括號對執行結果沒有區別,但是加上括號效率較低,所以后面能不加括號就不加括號。
PHP編程鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答