【问题标题】:Laravel package not autoloading - Laravel 5.2Laravel 包不自动加载 - Laravel 5.2
【发布时间】:2016-01-23 13:25:42
【问题描述】:

我正在构建一个 laravel 包,但它不会自动加载。

这是我的包的自动加载部分:

"autoload": {
    "classmap": [
        "src"
    ],
    "psr-4": {
        "Doitonlinemedia\\Translatableroutes\\": "src/"
    }
}

类的命名空间类似于Doitonlinemedia\Translatableroutes

文件夹结构如下:

- vendor
- - doitonlinemedia
- - - translatableroutes
- - - - composer.json
- - - - src
- - - - - class1.php

我在 app.php 中添加了 ServiceProvider,例如: Doitonlinemedia\Translatableroutes\TranslatableRoutesServiceProvider::class

但它一直说 Class 'Doitonlinemedia\Translatableroutes\TranslatableRoutesServiceProvider' not found

在每次更改时运行 composer dump-autoload

我做错了什么?

编辑

为了开发,我在 composer.json 主文件中添加了:"Doitonlinemedia\\Translatableroutes\\": "packages/doitonlinemedia/translatableroutes/src"。但是当我需要这个作曲家包到一个新项目时,我遇到了上述问题。

要试用这个包:https://github.com/doitonlinemedia/TranslatableRoutes 并按照说明进行操作

【问题讨论】:

    标签: php laravel laravel-5.2


    【解决方案1】:

    PHP 命名空间区分大小写。 你必须把它放到你的 composer.json 中

    "psr-4": {
        "Doitonlinemedia\\Translatableroutes\\": "src/"
    }
    

    而不是这个

    "psr-4": {
        "doitonlinemedia\\translatableroutes\\": "src/"
    }
    

    对我来说,它也可以在没有 classmap 选项的情况下工作

    再次运行composer dump-autoload,然后重试。

    编辑

    这对我有用

    {
        "name": "doitonlinemedia/translatableroutes",
        "description": "Create translatable resource routes",
        "authors": [
            {
                "name": "Tim van Uum",
                "email": "tim@doitonlinemedia.nl"
            }
        ],
        "minimum-stability": "stable",
        "license": "MIT",
        "require": {
            "php": ">=5.3.0"
        },
        "autoload": {
            "classmap": [
                "src"
            ],
            "psr-4": {
                "Doitonlinemedia\\Translatableroutes\\": "src/"
            }
        }
    }
    

    此外,您应该将此包添加到您的要求"illuminate/support": "~5.2"

    注意:如果未更新供应商包中的composer.json 文件,composer 似乎不会刷新它们的自动加载条目。

    编辑后,您必须将其推送到您的存储库中。在你的项目中重新安装包。

    如果您仍在积极开发您的软件包,我建议您按照以下说明设置环境:Developing your packages in Laravel 5

    无需重新安装或更新远程存储库即可轻松开发包。

    【讨论】:

    • 刚刚注意到。显然它已经奏效了。请参阅我在 laracast 中的回答。我会将该包添加到要求中(顺便说一句,它是什么?)我会记住你的。
    【解决方案2】:

    感谢 laracast 论坛上的一些帮助。我发现我的项目有点损坏了,因为包已经在工作了。

    https://laracasts.com/discuss/channels/laravel/trouble-autoloading-custom-package-laravel-52

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-02
      • 2017-11-09
      • 2014-10-19
      • 2013-03-12
      • 2015-04-23
      • 2016-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多