require(),include(),require_once()和include_once()之間的區別
引用文件的方法有兩種:require 及 include。
require 的使用方法如 require("file.php");
。這個函數通常放在 PHP 程序的最前面,PHP 程序在執行前,就會先讀入 require 所指定引入的文件,使它變成 PHP 程序網頁的一部份。常用的函數,亦可以這個方法將它引入網頁中。
include 使用方法如 include("file.php");
。這個函數一般是放在流程控制的處理部分中。PHP 程序網頁在讀到 include 的文件時,才將它讀進來。這種方式,可以把程序執行時的流程簡單化。
_once 后綴表示已加載的不加載
1.報錯 include引入文件的時候,如果碰到錯誤,會給出提示,並繼續運行下邊的代碼 require引入文件的時候,如果碰到錯誤,會給出提示,並停止運行下邊的代碼
注:在 PHP 4.3.5 之前,包含文件中的語法錯誤不會導致程序停止,但從此版本之后會。
2.條件引用
include()與require()的功能相同,用法上卻有一些不同,include()是有條件包含函數,而require()則是無條件包含函數, 例如下面例子,如果變量$somg為真,則將包含文件somefile.php:
1
2
3
|
if
(
$some
){<br>
include
'somefile.php'
;
}
|
但無論$some取何值,下面的代碼將把文件somefile.php包含進文件里:
1
2
3
|
if
(
$something
){
require
'somefile.php'
;
}
|
下面的例子充分說明了這兩個函數之間的不同
1
2
3
4
5
|
$i
= 1;
while
(
$i
< 3) {
require
"somefile.$i.php"
;
$i
++;
}
|
可以從以上這段代碼中看出,每一次循環的時候,程序都將把同一個文件包含進去,很顯然這不我們想要的,可以看出這段代碼希望在每次循環時, 將不同的文件包含進來,如果要完成這個功能,只能使用函數include()
1
2
3
4
|
$i
= 1;<br>
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沒有
1
2
3
4
5
6
|
$login
=
include
(’test.php’);
if
(!
empty
(
$login
)){
echo
“文件包含成功”;
}
else
{
echo
“文件包含失敗”;
}
|
include()執行時需要引用的文件每次都要進行讀取和評估, require()執行時需要引用的文件只處理一次(實際上執行時需要引用的文件內容替換了require()語句) 可以看出若有包含這些指令之一的代碼和可能執行多次的代碼,則使用require()效率比較高, 若每次執行代碼時相讀取不同的文件或者有通過一組文件疊代的循環,就使用include(), 可以給想要包括的文件名設置變量,當參數為 include()時使用這個變量