include如果引入兩個文件,都有一個相同的函數名,那麼就會發生重定義的錯誤。使用include_once可以避免此錯誤,一般都_once用的比較多。應依實際情況需求include和_once的差別。
include和require區別
當要包含的檔案不存在時,include產生警告(Warning),該語句後面的程式會繼續執行;而require則導致一個致命錯誤(Fatal error),程式就此終止。
include_once和require_once
應該用於在腳本執行期間同一個檔案有可能被包含超過一次的情況下,想確保它只被包含一次以避免函數重定義,變數重新賦值等問題。
1.incluce在用到時加載,這個函數一般是放在流程控制的處理區段中
2.require在一開始就加載,這個函數通常放在 PHP 程序的最前面
3._once後綴表示已加載的不加載
關於這個問題網上一搜一大把的,include和include_once沒什麼大研究,區別就是include不管你之前有沒有引入過該文件,都仍然引入,include_once則檢查文件有沒有已經在前面引入過了,如果有了就不再引入了
一般推薦用require_once,所以建議樓主多查查include和require的差別,網路上很多。這裡簡單說兩個:
incloude引入的檔案發送錯誤或檔案不存在,include會發出警告並繼續執行程序,而require則會產生致命錯誤並終止程序。
require_once() 語句在腳本執行期間包含並執行指定檔案。此行為和 require() 語句類似,唯一差異是如果該檔案中的程式碼已經被包含了,則不會再次包含。 require_once()函數的作用和 require() 幾乎是相同的
include_once() 語句在腳本執行期間包含並執行指定檔。此行為和 include() 語句類似,唯一差異是如果該檔案中的程式碼已經被包含了,則不會再次包含。如同此語句名字暗示的那樣,只會包括一次。 clude_once()函數的作用和 include() 是幾乎相同的
require_once的作用是會檢查之前是否加載過該文件,如果沒有加載則加載 如果加載過就不再次加載。例如某檔定義了一個類型如果兩次載入該檔案會出現錯誤,require_once會避免這個錯誤.
#自從認識include和include_once的區別後一直使用include_once ,認為它只載入一次,可以避免重複加載,而且貌似自己也無法很好的確定是否已經重複加載,原來自己一直都是錯誤的。
其實也有好處吧如果專案是幾個人開發的話,include_once倒也比較好的
include_once執行順序
嘗試解析文件的絕對路徑, 如果能解析成功, 則檢查EG(included_files), 存在則回傳, 不存在繼續
開啟檔案, 得到檔案的開啟路徑(opened path)
拿opened path去EG(included_files)查找, 是否存在, 如果存在則返回, 不存在繼續
編譯文件(compile_file
最近關於apc.include_once_override的去留, 我們做了幾次討論, 這個APC的配置項一直一來就沒有被很好的實現過.
在這裡, 我想和大家在此分享下, 這個問題的原因, 以及對我們的一些啟示.
關於使用include還是include_once (以下,都包含require_once), 這個討論很長了, 結論也一直有, 就是盡量使用include, 而不是include_once, 以前最多的理由的是, include_once需要查詢一遍已加載的文件列表, 確認是否存在, 然後再加載.
誠然, 這個理由是對的, 不過, 我今天要說的, 是另外一個的原因.
我們知道, PHP去判斷一個文件是否被加載, 是需要得到這個檔案的opened_path的, 意思是說, 例如:
以上是php關於include_once與include的差異詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!