2014-05-11 30 views
0

所以在composer.json我有以下幾點:類映射關鍵字不會插入類

"autoload": { 
     "psr-0" : { 
      "classmap": ["src/libraries/"] 
     } 
    }, 

我得到了一類具有路徑~\src\libraries\ClassName.php,當我嘗試做新的類名的實例(); PHP給了我一個錯誤,指出沒有找到類ClassName。我還包括Composer自動加載器。它讓我瘋狂

回答

1

你的自動加載定義是錯誤的。

您正在定義您使用PSR-0。您可以定義以「classmap」前綴開頭的所有類(全部小寫)位於「src/libraries」目錄中。

然後嘗試使用類名「ClassName」。該類不以字母「classmap」開頭,所以它不會由此PSR-0自動加載加載。

如果你有文件,如你所說的那樣,符合PSR-0,即類名相同的路徑和文件名,這將是你的榜樣正確:

"autoload": { 
    "psr-0" : { 
     "ClassName": ["src/libraries/"] 
    } 
}, 

注意沒有「班級地圖」了,因爲這沒有意義。您使用那些位於該目錄中的所有類通用的那部分類名作爲前綴 - 這裏是「ClassName」(請注意,這些案例與原始類名稱中的案例完全匹配,即使類名是在PHP內部不區分大小寫 - 但文件系統不是,PSR-0沒有定義任何情況下的雜耍,它直接使用這些名稱)。

如果您可以使用PSR-0或PSR-4,則應儘量避免直接使用類別映射。您始終可以優化Composer自動加載器以將所有內容都擴展到類圖中 - 類圖功能本身僅用於幫助那些不符合兩種標準的舊代碼。

+0

謝謝,夥計。太糟糕了,這在文檔中沒有說明。 – user1113314

+0

我相信它是:https://getcomposer.org/doc/04-schema.md#autoload – Sven