未找到Laravel 5 Custom ServiceProvider

时间:2015-06-25 12:56:57

标签: php laravel laravel-5 package teamleader

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

我收到以下错误

  

ProviderRepository.php第150行中的FatalErrorException:   Class' Notflip \ Teamleader \ TeamleaderServiceProvider'找不到

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

enter image description here

我的包中的composer.json

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

TeamleaderServiceProvider

<?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'

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

2 个答案:

答案 0 :(得分:1)

你在composer中的定义缺少初始斜杠,你还没有从root指定src的路径。

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

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

<?php namespace Notflip\Teamleader;

答案 1 :(得分:0)

解决

在外观中,IOC绑定被命名为错误(错误的情况)

  

该名称应该是&#39; teamleader&#39;小写。

<强>门面

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'));
        });
    }
}