[英]namespace defined in autoload psr-4 using in laravel 5 app.php giving not found error
我的頭陷入了一些錯誤。我沒有走錯地方。 我正在使用laravel 5
並安裝它。我想使用l5-repository
所以我使用composer
commnad安裝了https://github.com/prettus/l5-repository這個存儲庫:
composer require prettus/l5-repository
並且我根據安裝文檔進行了所有更改,並且工作正常。
使用composer安裝存儲庫后,我的目錄結構如下:
curovis
|-- composer.json
|-- composer.lock
|-- app
|-- bootstarp
|-- config
|-- database
`-- vendor
|-- composer
`-- prettus
`-- l5-repository
|-- src
| `-- Prettus
| `-- Repository
`-- composer.json
之后,按照文檔,我在/var/www/curovis/config/app.php
輸入了以下內容: Prettus\\Repository\\Providers\\RepositoryServiceProvider::class,
它的工作正常。 現在我想更改根目錄條目的composer.json
,如下所示:
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/",
"Prettus\\Repository\\": "vendor/prettus/l5-repository/src/Prettus"
}
},
並使用composer update
命令。 它也可以正常工作。 現在我想使用另一個名字使用相同的倉庫,所以我改變了以下的composer.json
:
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/",
"RepoTest\\Repository\\": "vendor/repotest/l5-repository/src/RepoTest"
}
},
並在app.php
file.run composer update
命令中添加RepoTest\\Repository\\Providers\\RepositoryServiceProvider::class,
。 然后給出以下錯誤:
FatalErrorException in /var/www/curovis/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php line 146: Class 'RepoTest\Repository\Providers\RepositoryServiceProvider' not found
我不明白為什么laravel正在尋找/var/www/curovis/vendor/laravel/framework/src
這個路徑,而不是以"RepoTest\\\\Repository\\\\": "vendor/repotest/l5-repository/src/RepoTest"
在composer.json中。 是我想念的東西還是作曲家中的任何錯誤。 感謝幫助。
您永遠不會為在主composer.json
添加的軟件包添加自動加載功能。 路徑“供應商”不應在此處出現。
我知道您正在嘗試添加一個程序包,然后對其進行修改並改用它。 您已將自動加載前綴從“ Prettus”更改為“ RepoTest”,但是還更改了PHP文件中的名稱空間嗎? 簡單地重命名路徑不會影響PHP類的名稱和名稱空間,因此,如果重命名文件,並且在該文件內未定義匹配的類,則自動加載將失敗。
無論您要做什么,我都認為最好問這個問題,而不是要解決由於您解決原始問題的方式而認為必要的問題。 如果您想知道如何修改現有項目並使用其變體:詢問它。
通過改變作曲家進入上述錯誤sovled:當我有看到autoload_classmap.php
和autoload_psr4.php
的文件/vendor/composer/
文件夾autoload_classmap.php
文件不包含我需要的命名空間。 所以我在composer.json
做了以下更改:
"autoload": {
"classmap": [
"database","vendor/repotest/src/Repotest/Repository/"
],
"psr-4": {
"App\\": "app/",
"Repotest\\Repository\\": "vendor/repotest/src/Repotest/Repository/"
}
},
因此,通過在"classmap":
進行輸入:在autoload_classmap.php
進行輸入,現在可以正常工作。 感謝@sven的幫助。
例:
"autoload": {
"classmap": [
"database"
],
"files": [
"app/helper.php"
],
"psr-4": {
"App\\": "app/"
}
}
要加載的默認Composer文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.