【问题标题】:Laravel custom package loading issueLaravel 自定义包加载问题
【发布时间】:2016-08-29 11:27:55
【问题描述】:

我有一个小问题。我正在尝试制作一个 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 生成的。我怀疑这是问题的根源,但谁知道呢。

有什么想法吗?

【问题讨论】:

    标签: php laravel composer-php psr-4


    【解决方案1】:

    仔细检查任何地方的命名空间。

    不要忘记将你的课程添加到 composer.jsom 以便 Laravel 可以 autoload 它:

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

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

    更新

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

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

    【讨论】:

    • 好吧,我已经将存根发布到了packagist,所以我可以尝试直接用composer安装它。我相信除了将它添加到应用程序配置中的需求列表和服务提供者之外,我不应该做任何事情。是否与服务提供者只有 boot 和 register 方法并且它们是空的事实有关?
    • 其实你需要为它添加autoload部分。检查更新的答案。
    • 感谢一百万,就像一个魅力。你知道的越多,呵呵。
    猜你喜欢
    • 2017-11-09
    • 1970-01-01
    • 2020-10-22
    • 2012-03-24
    • 2015-06-11
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多