Laravel 自定义包加载问题

Laravel custom package loading issue

我有个小问题。我正在尝试制作一个 Laravel 包,但无法加载。每当我尝试在 config/app.php 中添加它的提供者时,我得到:

Error class 'Something\HttpRequest\HttpRequestServiceProvider' not found

目前它只有一个文件,位于 "vendor/something/http-request/src/HttpRequestServiceProvider"。我怀疑与路径有关,但我不确定。

我试过了

composer dump-autoload

但它没有被映射。

编辑:

我还将它发布到 packagist 并通过 composer 安装它,以检查它是否有效(好吧,它没有 :D)。

服务提供商存根如下所示:

<?php

namespace Something\HttpRequest;

use Illuminate\Support\ServiceProvider;

class HttpRequestServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {

    }
}

所以基本上它只是 Laravel 生成的一个。我怀疑这是问题的根源,但谁知道呢。

有什么想法吗?

仔细检查各处的命名空间。

不要忘记将您的 class 添加到 composer.jsom,这样 Laravel 就可以 autoload 它:

"autoload": {
    "classmap": [
        "database",
        "app/custom"
    ],
    "files": [
        "app/someFolder/customHelpers.php"
    ]

运行 composer dumpauto 之后。如果它不起作用,请尝试 运行 composer dumpauto -o(带有 -o 标志),有时它会有所帮助。

更新

当您将您的包上传到 packagist 并使用 composer 安装它时,您需要将 autoload 部分添加到包的 composer.json,例如:

"autoload": {
    "psr-4": {
        "YourName\YourPackage\": "src/"
    }
}