[From: http://www.phpchina.com/html/20/12020-16121.html]

require()

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



這幾個的區別呢 經常會聽到有人討論

連一些PHPER面試都會出這個題目

我淺顯的說一下我的意見

先看手冊怎麼說的:
include&require

include()語句包含並運行指定文件。

以下文檔也適用於require()。這兩種結構除了在如何處理失敗之外完全一樣。include()產生一個警告而require()則導致一個致命錯誤。換句話說,如果想在遇到丟失文件時停止處理頁面就用require()。include()就不是這樣,腳本會繼續運行。同時也要確認設置了合適的include_path。注意在 PHP 4.3.5 之前,包含文件中的語法錯誤不會導致程序停止,但從此版本之後會。
include_once

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

include_once()應該用於在腳本執行期間同一個文件有可能被包含超過一次的情況下,想確保它只被包含一次以避免函數重定義,變量重新賦值等問題。
require_once

require_once()語句在腳本執行期間包含並運行指定文件。此行為和require()語句類似,唯一區別是如果該文件中的代碼已經被包含了,則不會再次包含。有關此語句怎樣工作參見require()的文檔。

require_once()應該用於在腳本執行期間同一個文件有可能被包含超過一次的情況下,想確保它只被包含一次以避免函數重定義,變量重新賦值等問題。



個人使用經驗:

1.路徑問題。

特別是 嵌套包含的時候,一定的注意包含文件的路徑。

比如 A文件包含了B文件,B文件包含了C文件,A,B,C文件都不在同一個文件夾下,這個時候往往很容易出錯誤。

解決方案:定義一個基路徑sitebase

2.效率問題

include_once,require_once,與include,require比較,效率要低一點,因為他們至少得先判斷一下這個文件是否存在。

Felix 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • Chung
  • 沒錯,require_once的確碰到"A文件包含了B文件,B文件包含了C文件,A,B,C文件都不在同一個文件夾下,這個時候往往很容易出錯誤。"而且我的經驗是特別是往比自己「下」層的目錄中出錯. 上層還不容易出錯

    請問你說的sitebase是什麼?google好像找不到?