PHP 中 include 和 require 的概要及區別介紹

大雄45發表於2021-05-02
導讀 require() 語句的效能與 include() 相類似,都是包括並執行指定檔案。不同之處在於:對 include() 語句來說,在執行檔案時每次都要進行讀取和評估;而對於 require() 來說,檔案只處理一次(實際上,檔案內容替換 require() 語句)。

PHP 中 include 和 require 的概要及區別介紹PHP 中 include 和 require 的概要及區別介紹

概要

require() 語句的效能與 include() 相類似,都是包括並執行指定檔案。不同之處在於:對 include() 語句來說,在執行檔案時每次都要進行讀取和評估;而對於 require() 來說,檔案只處理一次(實際上,檔案內容替換 require() 語句)。這就意味著如果可能執行多次的程式碼,則使用 require() 效率比較高。另外一方面,如果每次執行程式碼時是讀取不同的檔案,或者有透過一組檔案迭代的迴圈,就使用 include() 語句。

require() 的使用方法如:

require("myfile.php")

這個語句通常放在 PHP  程式的最前面。PHP 程式在執行前,就會先讀入 require() 語句所引入的檔案,使它變成 PHP  檔案的一部分。

include() 使用方法和 require 一樣如:

include("myfile.php")

這個語句一般是放在流程控制的處理區段中。

PHP 指令碼檔案在讀到 include() 語句時,才將它包含的檔案讀取進來。這種方式,可以把程式執行時的流程簡單化。

  1. incluce 在用到時載入
  2. require 在一開始就載入
  3. _once 字尾表示已載入的不載入

PHP 系統在載入PHP程式時有一個偽編譯過程,可使程式執行速度加快。但 incluce 的文件仍為解釋執行。include 的檔案中出錯了,主程式繼續往下執行,require 的檔案出錯了,主程式也停了,所以包含的檔案出錯對系統影響不大的話(如介面檔案)就用 include,否則用 require。

require() 和 include() 語句是語言結構,不是真正的函式,可以像 php 中其他的語言結構一樣,例如 echo() 可以使用 echo("ab") 形式,也可以使用 echo "abc" 形式輸出字串 abc。require() 和i nclude() 語句也可以不加圓括號而直接加引數。

include_once() 和 require_once() 語句也是在指令碼執行期間包括執行指定檔案。此行為和 include() 語句及 require() 類似,使用方法也一樣。唯一區別是如果該檔案中的程式碼已經被包括了,則不會再次包括。這兩個語句應該用於在指令碼執行期間,同一個檔案有可能被包括超過一次的情況下,確保它只被包括一次,以避免函式重定義以及變數重新賦值等問題。

詳解
報錯

include 引入檔案的時候,如果碰到錯誤,會給出提示,並繼續執行下邊的程式碼。

require 引入檔案的時候,如果碰到錯誤,會給出提示,並停止執行下邊的程式碼。

用例子來說話,寫兩個 php 檔案,名字為 test-include.php 和 test-require.php,注意相同的目錄中,不要存在一個名字是 test-nothing.php 的檔案。

test-include.php
test-require.php

瀏覽 ,因為沒有找到 test-nothing.php 檔案,我們看到了報錯資訊,同時,報錯資訊的下邊顯示了 abc,你看到的可能是類似下邊的情況:

Warning: include(test-nothing.php) [function.include]: failed to open stream: No such file or directory in D:\www\test-include.php on line 2
Warning: include() [function.include]: Failed opening 'test-nothing.php' for inclusion (include_path='.;C:\php5\pear') in D:\www\test-include.php on line 2
abc

瀏覽 ,因為沒有找到 test-nothing.php 檔案,我們看到了報錯資訊,但是,報錯資訊的下邊沒 有顯示abc,你看到的可能是類似下邊的情況:

Warning: require(test-nothing.php) [function.require]: failed to open stream: No such file or directory in D:\www\test-require.php on line 2
Fatal error: require() [function.require]: Failed opening required 'test-nothing' (include_path='.;C:\php5\pear') in D:\www\test-require.php on line 2
檔案引用方式

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

原文來自:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2770760/,如需轉載,請註明出處,否則將追究法律責任。

相關文章