3

在一些错误中陷入困境。我没有得到我做错的地方。我正在使用laravel 5并安装它。我想使用l5-repository,所以我使用commnad安装了https://github.com/prettus/l5-repository这个存储库:composer

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命令。它也可以正常工作。现在我想用另一个名字使用相同的 repo,所以我有以下变化composer.json

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

并添加RepoTest\Repository\Providers\RepositoryServiceProvider::class,file.runapp.php命令composer update。然后它给出以下错误:

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 中提供。是我遗漏的任何东西或作曲家的任何错误。感谢帮助。

4

3 回答 3

1

你永远不要为你在 main 中添加的包添加自动加载composer.json。路径“供应商”不应该出现在那里。

我知道您正在尝试添加一个包,然后对其进行修改并改用它。您将自动加载前缀从“Prettus”更改为“RepoTest”,但您是否也更改了 PHP 文件中的命名空间?简单地重命名路径不会影响 PHP 类名和命名空间,所以如果重命名一个文件,并且在该文件中没有定义匹配的类,自动加载将失败。

无论您尝试做什么,我认为询问这个问题是个好主意,而不是要求解决您认为有必要的问题,因为您解决原始问题的方式。如果您想知道如何修改现有项目并使用它的变体:询问它。

于 2015-07-28T22:54:46.697 回答
-1

通过更改作曲家条目解决了上述错误:当我看到文件夹文件autoload_classmap.php的文件不包含我需要的命名空间时。所以我做了以下更改:autoload_psr4.php/vendor/composer/autoload_classmap.phpcomposer.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 的帮助。

于 2015-07-29T10:09:04.393 回答
-1

例子:

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

要加载的默认 Composer 文件。

于 2016-05-17T12:21:28.237 回答