2010-04-07 69 views
5

使用PHP的include_oncerequire_once而不是使用類似C的include與一個標頭保護程序更有效嗎?PHP包括一次

即,

include_once 'init.php'; 

include 'init.php'; 

//contents of init.php 
if (!defined('MY_INIT_PHP')) { 
    define('MY_INIT_PHP', true); 
    ... 
} 

+5

這是代碼性能的瓶頸嗎? – 2010-04-07 19:11:48

回答

9

「require_once」和「include_once」一般是慢了一點,只是「要求」和「包括」,因爲他們執行請檢查是否文件已經被加載過。

但不同的只是在非常複雜的應用程序,你應該做的自動加載反正通過的事項不需要require_once/include_once,如果你的自動加載磁帶機以及編碼。

在最簡單的應用,最好使用放在require_once/include_once爲了方便的原因。

的頭文件保護的做法是應該避免的只是亂碼。試想一下,如果你忘記檢查許多文件中的一個。調試可能是一場噩夢。

如果您的應用程序適合它,只需使用自動加載。這是快速和最方便,乾淨的方式。

+2

而......定義('MY_INIT_PHP')...'也不是免費的。因此,性能問題歸結爲「你的php腳本解決方案比php的內部解決方案更快」......我懷疑絕大多數情況下。 – VolkerK 2010-04-07 19:53:29

+1

@ VolkerK是的,這也增加了它。用解釋的PHP代碼編寫的任何解決方案的定義都比PHP本地實現要慢。至少我想不出任何不同的情況。 – selfawaresoup 2010-04-07 19:57:19

1

你可以用計時器嘗試10,000次,但我覺得定義MY_INIT_PHP是無窮快。

說實話,很可能這種小的差異,有沒有實際需要照顧,除非你的工作對於像Facebook這樣的網站。

0

如果腳本內容是唯一的,我總是使用REQUIRE_ONCE。

+0

我也幾乎總是使用require_once ...的原因不同:如果文件丟失,require_once會給出致命錯誤,而include_once只會在此情況下發出警告。否則,這兩個是相同的。 – hongliang 2010-04-07 22:46:31

2

我希望include_once比使用在包含文件中頭文件保護更快,因爲你仍然需要打開並加載在後者的文件。

+0

你說得對。他應該詢問它是否比下面的代碼更快:if(!defined('MY_INIT_PHP')){define('MY_INIT_PHP',true);包括'init.php';} – webbiedave 2010-04-07 20:20:49