程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 再講php中require(),include(),require_once()和include_once()他們的區別

再講php中require(),include(),require_once()和include_once()他們的區別

編輯:關於PHP編程

本文章介紹了php四種調用外部文件函數用法和區別,有需要了解的朋友可以參考一下。

引用文件的方法有兩種:require 及 include。兩種方式提供不同的使用彈性。

require 的使用方法如 require("MyRequireFile.php"); 。這個函數通常放在 PHP 程序的最前面,PHP 程序在執行前,就會先讀入 require 所指定引入的文件,使它變成 PHP 程序網頁的一部份。常用的函數,亦可以這個方法將它引入網頁中。

include 使用方法如 include("MyIncludeFile.php"); 。這個函數一般是放在流程控制的處理部分中。PHP 程序網頁在讀到 include 的文件時,才將它讀進來。這種方式,可以把程序執行時的流程簡單化。


_once 後綴表示已加載的不加載

1.報錯

include引入文件的時候,如果碰到錯誤,會給出提示,並繼續運行下邊的代碼
require引入文件的時候,如果碰到錯誤,會給出提示,並停止運行下邊的代碼

注:在 PHP 4.3.5 之前,包含文件中的語法錯誤不會導致程序停止,但從此版本之後會。

2.條件引用


include()與require()的功能相同,用法上卻有一些不同,include()是有條件包含函數,而require()則是無條件包含函數,
例如下面例子,如果變量$somg為真,則將包含文件somefile.php:

 

 代碼如下 復制代碼 if($some){ include 'somefile.php'; }

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

 代碼如下 復制代碼 if($something){   require 'somefile.php'; }

下面的例子充分說明了這兩個函數之間的不同

 代碼如下 復制代碼 $i = 1;
while ($i < 3) {   require "somefile.$i.php";   $i++; }

可以從以上這段代碼中看出,每一次循環的時候,程序都將把同一個文件包含進去,很顯然這不我們想要的,可以看出這段代碼希望在每次循環時,
將不同的文件包含進來,如果要完成這個功能,只能使用函數include()

 代碼如下 復制代碼 $i = 1;
while ($i < 3) {  
include "somefile.$i.php";   $i++;
}

3.require用相對路徑的時候

當A引用B,而B又引用了其他文件C時,C的路徑如果是相對路徑,則是相對於A的路徑,而不是相對於B的'

4.require_once() 語句在腳本執行期間包括並運行指定文件。此行為和 require() 語句類似,唯一區別是如果該文件中的代碼已經被包括了,則不會再次包括。

include_once() 語句在腳本執行期間包括並運行指定文件。此行為和 include() 語句類似,唯一區別是如果該文件中的代碼已經被包括了,則不會再次包括。如同此語句名字暗示的那樣,只會包括一次。


5..文件引用方式

include有返回值,而require沒有

 代碼如下 復制代碼 $login = include(’test.php’);
if(!empty($login))
{   echo “文件包含成功”;
 }
else
{   echo “文件包含失敗”;
 }

include()執行時需要引用的文件每次都要進行讀取和評估,
require()執行時需要引用的文件只處理一次(實際上執行時需要引用的文件內容替換了require()語句)
可以看出若有包含這些指令之一的代碼和可能執行多次的代碼,則使用require()效率比較高,
若每次執行代碼時相讀取不同的文件或者有通過一組文件疊代的循環,就使用include(),
可以給想要包括的文件名設置變量,當參數為 include()時使用這個變量

 代碼如下 復制代碼

<?
conn.php
$dbh=mysql_connect('localhost','root','123456');
mysql_select_db('DB','$dbh');
?>
在實際應用中,我們調用文件如:
require("conn.php")或者include("conn.php");
但是如果這樣:
filename.php
require("conn.php");
function myfun($par1,$par2)
{包含對數據庫處理的語句}
.....
myfun($par1,$par2);
.....
myfun($p1,$p2);
?>


 

總結


incluce在用到時加載
require在一開始就加載
_once後綴表示已加載的不加載
php系統在加載php程序時有一個偽編譯過程,可使程序運行速度加快。但incluce的文檔仍為解釋執行
include的文件中出錯了,主程序繼續往下執行
require的文件出錯了,主程序也停了
所以包含的文件出錯對系統影響不大的話(如界面文件)就用include,否則用require
以下文檔也適用於 require()。這兩種結構除了在如何處理失敗之外完全一樣。include() 產生一個警告而 require() 則導致一個致命錯誤。換句話說,如果你想在遇到丟失文件時停止處理頁面就用 require()。include() 就不是這樣,腳本會繼續運行。同時也要確認設置了合適的 include_path。
require()函數用給定文件的內容取代它本身,這一代替過程發生在PHP引擎編譯代碼期間,而不是在執行期間進行,它不象include()那樣會首先進行計算。require()函數更多地用在靜態元素中,而include()更多地用於動態元素中。與include_once()類似的是,require_once()將首先檢查是否已經插入給定的代碼,如果代碼已經存在,就不再插入了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved