首先include和require都是引入指定的文件。_once表示只引入一次,已經引入過一次的文件接下來就不會再引入。
例如在【index.php】中
<?php echo '最愛PHP'; ?>
運行下面的程序代碼
<?php include 'index.php'; require 'index.php'; include_once 'index.php'; require_once 'index.php'; ?>
輸出的結果會是:最愛PHP最愛PHP,如果將_once引入的語句放在include和require上面,結果將是:最愛PHP最愛PHP最愛PHP最愛PHP。
1、加載失敗的處理方式不同
include與require除了在處理引入文件的方式不同外,最大的區別就是:
include在引入不存文件時產生一個警告且腳本還會繼續執行,
require則會導致一個致命性錯誤且腳本停止執行。
<?php include 'hello.php'; echo 'world'; ?>
如果hello.php不存在,echo ‘world’這句是可以繼續執行的。
<?php require 'hello.php'; echo 'world'; ?>
如果hello.php不存在,echo ‘hello’這句是不會執行的,到require時就停止了。
2、include()是有條件包含函數,而 require()則是無條件包含函數
<?php
if(FALSE){ include 'file.php'; //file.php不會被引入 } if(FALSE){ require 'file.php'; //file.php將會被引入 }
?>
3、文件引用方式
- include有返回值,而require沒有
<?php $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后面加不加括號對執行結果沒有區別,但是加上括號效率較低,所以后面能不加括號就不加括號。