1

我正在为一个包制作一个 Laravel ServiceProvider。包是https://github.com/sumocoders/Teamleader

我收到以下错误

ProviderRepository.php 第 150 行中的 FatalErrorException:找不到类“Notflip\Teamleader\TeamleaderServiceProvider”

我不知道我做错了什么,这是我的文件夹结构

在此处输入图像描述

我的包中的 composer.json

"autoload": {
    "psr-4": {
       "Notflip\\Teamleader": "src/"
    }
}

领队ServiceProvider

<?php namespace Teamleader\Laravel;

use Illuminate\Support\ServiceProvider;

class TeamleaderServiceProvider extends ServiceProvider
{
    /**
     * Register bindings in the container.
     *
     * @return void
     */
    public function publishes()
    {
        $this->publishes([
            __DIR__.'/Config/config.php' => config_path('teamleader.php'),
        ]);
    }
    public function register()
    {
        $this->app->bind('Teamleader\Laravel', function () {
            return new Teamleader(config('teamleader.API_GROUP'), config('teamleader.API_SECRET'), config('teamleader.SSL'));
        });
    }
}

正面

<?php namespace Teamleader\Laravel\Facade;

class Teamleader extends Facade
{
    protected static function getFacadeAccessor()
    {
        return 'Teamleader';
    }
}

在我的config.php中,我将以下行添加到提供程序

'Notflip\Teamleader\TeamleaderServiceProvider',

这条线到别名

'Teamleader'=> 'Notflip\Teamleader\Facade\Teamleader'

任何人都知道我可能做错了什么?谢谢!我非常接近结果!

4

2 回答 2

1

您在作曲家中的定义缺少初始斜杠,并且您没有指定从根目录到 src 的路径。

"psr-4": {
   "\\Notflip\\Teamleader": "notflip/teamleader-laravel/src/"
}

此外,您在 TeamleaderServiceProvider 顶部的名称空间声明是错误的,应该是:

<?php namespace Notflip\Teamleader;
于 2015-06-25T13:17:10.943 回答
0

解决了

在外观中,IOC 绑定被命名为错误(错误大小写)

该名称应该是小写的“团队负责人”。

正面

class Teamleader extends Facade
{
    protected static function getFacadeAccessor()
    {
        return 'teamleader';
    }
}

服务提供者

<?php namespace Teamleader\Laravel;

use Illuminate\Support\ServiceProvider;

class TeamleaderServiceProvider extends ServiceProvider
{
    /**
     * Register bindings in the container.
     *
     * @return void
     */
    public function publishes()
    {
        $this->publishes([
            __DIR__.'/Config/config.php' => config_path('teamleader.php'),
        ]);
    }
    public function register()
    {
        $this->app->bind('teamleader', function () {
            return new Teamleader(config('teamleader.API_GROUP'), config('teamleader.API_SECRET'), config('teamleader.SSL'));
        });
    }
}
于 2015-06-25T14:40:49.067 回答