密钥是./composer.json中的副本

时间:2016-01-13 09:07:40

标签: php laravel laravel-5 composer-php

我正在尝试构建我的应用程序,以便我的所有模型都在一个专用目录中(在我的案例中分类)。我用Laravel app目录创建了目录,并将其添加到我的composer.json文件中。下面是我的composer.json文件的结构:

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "Classified\\": "app/",
        "Classified\\": "app/Classified"
    }
},

然后我在我的终端中运行composer dump-autoload但是我继续得到“Key Classified \”在第29行的./composer.json中是重复的 “当我尝试在浏览器中查看我的应用时,我得到了:

  

致命错误:/ home / vagrant / Workspace / codulabproducts / classified / vendor / laravel / framework / src / Illuminate / Container / Container中未捕获的异常'ReflectionException',消息'Class App \ Http \ Kernel不存在'。 php在736行。

我的composer.json文件中的第29行是

"Classified\\": "app/Classified"

我不知道出了什么问题,因为我已经在其他项目中执行了这些步骤,一切顺利。

2 个答案:

答案 0 :(得分:8)

您可以为名称空间前缀定义多个目录。但在这种情况下,键的值必须是列表而不是字符串(请参阅the second example in the documentation):

{
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "Classified\\": ["app/", "app/Classified"]
        }
    }
}

答案 1 :(得分:3)

您的 psr-4 映射中不能包含重复的密钥。它应该定义给定命名空间的根文件夹,命名空间不能有多个根。

删除分类\ 命名空间的其中一个映射。