Laravel自定义包未加载

时间:2018-10-20 07:06:32

标签: php laravel laravel-5

我在以下路径中有一个软件包: packages / mypackage / demo

我的服务提供商位于

packages/mypackage/demo/src/vis/MyserviceProvider.php

并且我在composer.json中添加为:

"psr-4": {
      "Custom\\MyPackage\\": "packages/mypackage/demo/src/vis/",

        "App\\": "app/"
    }

composer updatecomposer dump-autoload -o

并在app.php中添加了服务提供商:

Custom\MyPackage\MyserviceProvider::class,

但出现以下错误:

  

找不到MyserviceProvider

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

文件夹中软件包的路径如下所示: packages / mypackage / demo / src

对于每个Laravel应用程序,每个新应用程序的根目录中都有一个主composer.json文件。这是您的主要应用程序编写器文件,这是我们定义所有应用程序依赖项的地方。

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/",
        "Mypackage\\Demo\\": "packages/mypackage/demo/src"
    }
},

然后,我们需要作曲家来运行自动加载器并自动加载程序包。为此,我们运行以下命令:

composer dump-autoload

添加我们的包裹服务提供商。

服务提供商是我们包装中的主要条目。这是我们的包被加载或引导的地方。在我们应用程序的根目录中,让我们通过命令行使用工匠命令创建ServiceProvider:

php artisan make:provider MyServiceProvider

这将在app / Providers / MyServiceProvider.php中创建一个新文件

让我们将该文件移动到我们的package文件夹中,使其位于packages/mypackage/demo/src/MyServiceProvider.php

注意::不要忘记将您的命名空间更改为MyServiceProvider.php文件中的Vendor \ Package_name 示例:

<?php
namespace Mypackage\Demo;
use Illuminate\Support\ServiceProvider;
class MyServiceProvider extends ServiceProvider
{    }

接下来,我们需要在config/app.php内的providers[]中添加新的服务提供商 数组:

'providers' => [

    /*
     * Laravel Framework Service Providers...
     */
    Illuminate\Auth\AuthServiceProvider::class,
    //.. Other providers
    Mypackage\Demo\MyServiceProvider.php::class,

],

现在,我们的服务提供商已加载,我们的自定义软件包已准备就绪,可以使用。