2012-04-22 68 views
3

我想知道是否有任何理由不需要它或需要它(因此名稱)。我偶然發現了這種說法:在條件語句中,require()和include()語句的作用是不同的嗎?

不像include()require()總是讀目標文件,即使 如果它的上線永遠不會執行。如果您想有條件地使用 包含文件,請使用include()。條件陳述不會影響 require()。但是,如果require()發生的行是 未執行,則目標文件中的任何代碼都不會執行 。

我解釋它的方式是包含內部條件不會最終運行,實際上不會包含它在內,這對我來說似乎不太昂貴的服務器。如果這是真的,我只是好奇。我沒有在手冊中看到它,所以我很懷疑。

回答

4

如果你有包含在一個錯誤的語句,它不會被解析。要求也是如此。主要和唯一的區別是,require會檢查文件是否存在,即使它從未執行過。那麼,至少這是我的經驗。

所以,兩者都只發生一次執行,但是如果文件不存在,require會顯示錯誤,無論它是否被執行。

+0

啊,我明白了。非常感謝你 – Andy 2012-04-22 04:52:52

+0

@你也許應該贊成並接受答案。 – ricochet1k 2012-04-22 04:56:00

1

不正是它是如何實現的,但是這應該給你什麼樣的兩者之間的區別是一個想法:

function require($file) { 
    if (!is_readable($file)) { 
     die("can't read $file"); 
    } 
    include($file); 
} 

包括在你告訴PHP包括它的文件讀取每次。 _once變體只是跟蹤已包含的內容,只包含一次。