創建Bundle 後出現Symfony3 ClassNotFoundException:根本原因和解決方案
在Symfony 3.3 中創建新的Bundle 中到“ClassNotFoundException”運行本機伺服器時發生錯誤。當自動載入器由於類別映射中不存在而無法載入類別時,就會出現此異常。
錯誤訊息表示 Symfony 嘗試從名稱空間「PaulArtBundle」載入「PaulArtBundle」類別。但是,自動載入器不包含此命名空間或類別定義。
解決方案:
要解決此問題,使用者必須手動更新「composer.json」檔案並將下列項目新增至「autoload」部分:
"psr-4": { "AppBundle\": "src/AppBundle", "Paul\": "src/Paul" }
這定義了命名空間「Paul」並將其對應到「src/Paul」目錄,bundle類別所在目錄。
更新「composer.json」檔案後,執行下列指令產生自動載入器並重新啟動伺服器:
composer dumpautoload
重新啟動本機伺服器(如果需要)。這應該會修復“ClassNotFoundException”錯誤並允許正確識別套件。
其他注意事項:
此問題是由於Symfony 3.2 中引入的更改而出現的,其中PSR-4 自動加載規則已修改為排除空命名空間。此變更需要在建立新套件時在「composer.json」檔案中進行明確命名空間映射。
Symfony Flex 是用於管理 Symfony 應用程式的較新工具,將來可能會透過自動添加必要的命名空間映射。
以上是建立捆綁包後出現 Symfony 3 ClassNotFoundException:如何修復 \'PaulArtBundle\' 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!