2015-07-28 95 views
2

在一些錯誤中困住了我的頭。我沒有得到我犯了錯誤的地方。 我使用laravel 5並安裝它。我想用l5-repository所以我安裝https://github.com/prettus/l5-repository這個倉庫使用composer commnad:在autoload psr-4中定義的名稱空間在laravel中使用5 app.php給出找不到的錯誤

composer require prettus/l5-repository 

和我的所有更改按安裝文件,其工作的罰款。使用作曲家我的目錄結構如下安裝庫後,

curovis 
|-- composer.json 
|-- composer.lock 
|-- app 
|-- bootstarp 
|-- config 
|-- database 
`-- vendor 
    |-- composer 
    `-- prettus 
     `-- l5-repository 
      |-- src 
      | `-- Prettus 
      |  `-- Repository 
      `-- composer.json 

在此之後按照Doc我已按照/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與follwing:

"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這條道路,而不是在composer.json "RepoTest\\Repository\\": "vendor/repotest/l5-repository/src/RepoTest"提供。 是我缺少的東西或作曲家的任何錯誤。 感謝您的幫助。

+0

如果你只是想使用另一個名字,你爲什麼不在config/app.php中使用和別名,而不是在composer.json上更改 –

+0

我想更改整個存儲庫結構,所以我想要一步一步一步過程。 –

回答

-1

sovled上面的錯誤,通過改變作曲家條目: 當我有看到/vendor/composer/文件夾autoload_classmap.php文件的autoload_classmap.phpautoload_psr4.php文件不包含我需要的命名空間。 所以我做了以下在我composer.json變化:

"autoload": { 
     "classmap": [ 
      "database","vendor/repotest/src/Repotest/Repository/" 
     ], 
     "psr-4": { 
      "App\\": "app/", 
      "Repotest\\Repository\\": "vendor/repotest/src/Repotest/Repository/" 
     } 
    }, 

所以在autoload_classmap.php使得在"classmap":使詞條進入現在工作的罰款。 謝謝@sven的幫助。

1

您永遠不會爲您在主composer.json內添加的軟件包添加自動加載。 「供應商」的路徑不應該出現在那裏。

我承認你正在嘗試添加一個包,然後修改它並使用它。您將自動加載前綴從「Prettus」更改爲「RepoTest」,但是您是否也更改了PHP文件中的命名空間?簡單地重命名路徑不會影響PHP類名稱和命名空間,因此如果您重命名文件,並且在該文件中沒有定義匹配類,則自動加載將失敗。

無論你想要做什麼,我都會問這個問題,而不是要求解決你認爲有必要的問題,因爲你解決原始問題的方式是一個好主意。如果你想知道如何修改現有的項目並使用它的變體:詢問它。

+0

是的。可能是這個問題。請你告訴我laravel 5中的路徑或文件,我必須在其中輸入autoload? –

-1

實施例:

"autoload": { 
    "classmap": [ 
     "database" 
    ], 
    "files": [ 
     "app/helper.php" 
    ], 
    "psr-4": { 
     "App\\": "app/" 
    } 
} 

默認作曲文件來加載。

相關問題