【php博一博】重談php的include和require

PHP中的include和require是一種語言結構(或者叫做語言構造器)而非函數,其不能被可變函數調用。

include和require在PHP中屬於很基礎但卻十分重要的功能,

通過Google和百度你可以搜索到很多關於兩者區別的結果,比如說require在沒有找到

被引入文件時報compile error,include報warning級別錯誤,當然也有其他方面的說法,俗語說"天下文章一大抄",很多

明顯的錯誤也被抄來抄去,對於缺少甄別能力的PHP初學者而言這是一顆顆的地雷,所以官方文檔纔是王道,自己動手測試是王道中的王道。


官方文檔關於require方面的描述是:

(PHP 4, PHP 5)

require is identical to include except upon failure it will also produce a fatal E_COMPILE_ERROR level error. In other words, it will halt the script whereasinclude only emits a warning (E_WARNING) which allows the script to continue.

require 和 include 幾乎完全一樣,除了處理失敗的方式不同之外。 require 在出錯時產生 E_COMPILE_ERROR 級別的錯誤。換句話說將導致腳本中止而 include 只產生警告(E_WARNING),腳本會繼續運行。


那是否真是如文檔所說呢,本人在使用PHP5.3.9做測試的結果是和文檔相符的,

那網上有很多關於require和include區別論述是否是對的呢?


論述1.include()與require()的功能相同,用法上卻有一些不同,include()是有條件包含函數,而require()則是無條件包含函數,

如果變量$some爲真,則將包含文件somefile.php:

if($some){

      include'somefile.php';

}

但無論$some取何值,下面的代碼將把文件somefile.php包含進文件裏:

if($some){

      require'somefile.php';

}

這個應該是不正確的,至少在我使用的PHP版本是不正確的。

 

論述2.include有返回值,而require沒有

我的測試代碼包含同一目錄下的三個文件:1.php,2.php,4.php,其中文件1.php的代碼如下:

<?php
$a=include "2.php";
$b=require "4.php";
if($a){
    echo "include file 2.php successfully\n";
    echo "a:".$a."\n";
}
if($b){
    echo "require file 4.php successfully\n";
    echo "b:".$b."\n";
}

測試結果是require和include在能找到文件的情況下都有返回值



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章