ServiceProvider未找到laravel 5.2

时间:2017-03-29 15:32:51

标签: php laravel-5.2

我在供应商内部创建了一个可编程的安装项目。 这是我的服务提供商文件,

<?php
namespace vimuths123\gitpack;

use Illuminate\Support\ServiceProvider;

class GitpackServiceProvider extends ServiceProvider {
    public function register() {
        $this->app->bind('gitpack', function ($app) {
            return new Gitpack;
        });
    }

    public function boot() {
        // loading the routes file
        require __DIR__ . '/Http/routes.php';

        // define the path for the view files
        $this->loadViewsFrom(__DIR__ . '/../views', 'gitpack');
    }
}

这是结构,

vendor
      |
     vimuths123
        |-gitpack
           |-src
           |  |-GitpackServiceProvider.php
           |
           |-composer.json

我已在app / config.php中添加了我的服务提供商

 vimuths123\gitpack\GitpackServiceProvider::class,

和我的根composer.json我有以下代码。

"psr-4": {
            "App\\": "app/",
            "vimuths123\\gitpack\\" : "vendor/vimuths123/gitpack/src"
        }

这是我的包编辑器文件,

{
    "name": "vimuths123/gitpack",
    "autoload": {
        "psr-4" : {
            "vimuths123\\gitpack\\" : "src" 
         }
    },
    "require": {
        "composer/installers": "~1.2"
    }
}

但我得到的只是这个错误,

  

Class&#39; vimuths123 \ gitpack \ GitpackServiceProvider&#39;找不到

有人可以帮助我,这将是很好的帮助。

2 个答案:

答案 0 :(得分:2)

您不应手动将任何文件放入vendor/。如果您正在开发一个库,那么它必须是作曲家可安装的库(最后安装在vendor/中。

您的composer.json似乎有误,尤其是vendor/vimuths123/gitpack/src中的psr4名称空间。由于我不打算使用vendor/vimuths123/gitpack/src命名空间,因此这一闻闻一英里。

最后,在添加新类之后,您应该更新类加载器以让它知道:

composer dumpautoload

解决了大多数问题&#34;无法找到我的班级&#34;的问题。

修改

您的问题似乎存在于您的库包中,而不是使用它的项目。根据评论,您需要修改 composer.json。假设包使用vimuths123\gitpack命名空间(注意,命名空间不必与包名相同 - 这是两个不同的东西)并且它的源位于src子文件夹中(因此它将是{{1然后我将返回<project>/vendor/vimuths123/gitpack/src部分看起来像这样:

autoload

然后"autoload": { "psr-4" : { "vimuths123\\gitpack\\" : "src" } }

答案 1 :(得分:-1)

运行以下artisan命令:

php artisan optimize

然后看看是否可以通过Laravel找到该课程。