2009-09-03 46 views
2

簡單的問題。爲什麼使用require_once來包含在文件中使用的類?例如,如果我創建一個擴展Zend_Db_Table_Abstract一類,我真的不需要在類聲明文件中有這樣的:需要Zend Framework庫中的類

require_once "Zend/Db/Table/Select.php"; 

他們被自動加載機反正包括在內。是否有顯式聲明「導入」的性能增益?是單元測試嗎?

回答

6

簡單的答案:如果你不使用自動加載器,功能不會中斷。

如果您知道您將使用自動加載器的事實,則無需在您的項目中執行此操作,但是如果您正在研究將由其他開發人員使用的框架(如Zend),那麼您將希望以最少的兼容性問題獲得可重用性,因此您應該確實需要明確的依賴關係。

另一個好處是,它可以幫助您瞭解您的課程何時變得依賴於太多的其他課程。這可以幫助您在設計物體時將您的coupling降到最低。

一個例子來自Zend/Db/Table/Select.php

/** 
* @see Zend_Db_Select 
*/ 
require_once 'Zend/Db/Select.php'; 


/** 
* @see Zend_Db_Table_Abstract 
*/ 
require_once 'Zend/Db/Table/Abstract.php'; 
+0

哎呀,是的,那是一個錯字。好的,這是有道理的。因此,例如,如果我要爲Zend_Amf實現編寫單獨的引導程序......如果沒有使用自動加載器,事情可能會中斷。很好的答案。 – typeoneerror 2009-09-03 03:27:30

+0

有關耦合的補充說明是非常好的。在我回去後追溯到某些課程的要求後,我明確指出有些人正在變得沉重。我也注意到很多Zend框架本身沒有明確的要求。 – typeoneerror 2009-09-03 16:32:30

+0

在ZF的基本代碼中,您可能需要在JIRA中顯示某些需要的內容。幫助爲已經很好的項目做出貢獻 – gnarf 2009-09-03 21:51:56

0

您可以通過使用「// require_once」 require_once更換「require_once」僅適用於類裝載應該用於擺脫在你的IDE這些調用。其他,例如從文件$file = include "test.php";插入一個數組,不要使用它(或不需要使用它)。