2012-11-19 92 views
7

所以 - 我有一個簡單PCR0自動加載機在我bootstrap.php中,應該從廠商目錄加載任何PCR0兼容庫類...跳過作曲家自動加載文件的生成?

spl_autoload_register(function($classname) { 
    $path = preg_match('/\\\\/', $classname) 
    ? str_replace('\\', DIRECTORY_SEPARATOR, $classname) 
    : str_replace('_', DIRECTORY_SEPARATOR, $classname); 
    $file = VENDORS_PATH . DIRECTORY_SEPARATOR . $path . '.php'; 
    if (file_exists($file)) { 
     require_once($file); 
    } 
}); 

我不知道如果我明白爲什麼作曲家生成自動加載文件供應商目錄(即作曲家目錄和autoload.php文件)?

我可以從那些產生自動加載文件停止作曲?或者我錯過了什麼?我不認爲我需要他們?

回答

4

有三個自動加載相關的文件,每一個都具有不同的目的。

  • vendor/autoload.php初始化作曲者的自動加載器。 Composer提供了一個自動加載器來支持作曲家兼容庫的加載。
  • 供應商/作曲家/ autoload_classmap.php這個文件被用於由自動裝載機類映射,這是任一庫,甚至不PSR-0兼容,或生產環境(類映射是通過文件系統比查找更快)。
  • 供應商/作曲/ autoload_namespaces.php這是該作曲家自帶

現在你提到你有你自己的PSR-0類加載器,你不應該使用PSR-0自動加載的配置爲作曲家的依賴關係 - 你只是應該要求/包括供應商/ autoload.php,並有作曲家把剩下的事情。

這就是爲什麼沒有選項來禁用自動加載文件的產生。最後,作曲家應該讓你使用安裝的庫,並且通過提供你需要的所有加載來啓用你。

+0

「 ..要求/包括供應商/ autoload.php並有作曲家..「嗯。恕我直言的依賴管理和自動加載是不同的問題。有些人更喜歡使用Zend \ Loader或其他庫來自動加載。我通常更喜歡僅使用PSR0兼容的庫,並在引導中使用這個簡短的片段 - 而不用擔心不同的加載策略。 Zend/Loader還支持來自作曲家文檔的類別地圖... –

+0

:「對於指定自動載入信息的庫,Composer會生成供應商/ autoload.php文件。」 - 對我來說,這幾乎聽起來像Composer呈現自動加載,而不是optonal,但你說它不是? –

+0

指定的圖書館是指通過作曲家安裝的圖書館。如果該庫的composer.json具有自動加載信息,那麼這些自動加載信息將被放入autoload.php。 – ppetermann

0

我個人加入這些文件的.gitignore因爲我工作的項目有正常工作的自動加載

相關問題