所以在composer.json我有以下幾點:類映射關鍵字不會插入類
"autoload": {
"psr-0" : {
"classmap": ["src/libraries/"]
}
},
我得到了一類具有路徑~\src\libraries\ClassName.php
,當我嘗試做新的類名的實例(); PHP給了我一個錯誤,指出沒有找到類ClassName。我還包括Composer自動加載器。它讓我瘋狂
所以在composer.json我有以下幾點:類映射關鍵字不會插入類
"autoload": {
"psr-0" : {
"classmap": ["src/libraries/"]
}
},
我得到了一類具有路徑~\src\libraries\ClassName.php
,當我嘗試做新的類名的實例(); PHP給了我一個錯誤,指出沒有找到類ClassName。我還包括Composer自動加載器。它讓我瘋狂
你的自動加載定義是錯誤的。
您正在定義您使用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自動加載器以將所有內容都擴展到類圖中 - 類圖功能本身僅用於幫助那些不符合兩種標準的舊代碼。
謝謝,夥計。太糟糕了,這在文檔中沒有說明。 – user1113314
我相信它是:https://getcomposer.org/doc/04-schema.md#autoload – Sven