gpt4 book ai didi

php - 如何从供应商包本身引导 laravel 5 服务提供者?

转载 作者:可可西里 更新时间:2023-11-01 13:15:58 26 4
gpt4 key购买 nike

我正在开发一个 Laravel 5 应用程序,现在应用程序的代码应该在多个 laravel 5 应用程序中重复使用,这就是为什么我要创建一个 composer 包,然后我想在任何地方安装这个包具有相同功能并在其上构建的 laravel 5 应用程序的数量。

我是 composer 包开发的新手,尤其是使用服务提供商将包挂接到 Laravel 5 中。到目前为止,我了解到如果我使用如下所示的服务提供商,我将能够在 laravel 5 应用程序中使用路由:

<?php

namespace Uppdragshuset\AO\Tenant;

use Illuminate\Support\ServiceProvider;

class TenantServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}

/**
* Register the application services.
*
* @return void
*/
public function register()
{
include __DIR__.'/routes.php';
}
}

现在要完成这项工作,我只需要通过 composer 将软件包安装到任何全新的 Laravel 5 安装中,然后我只需要更新 app.php 中的提供程序数组:

Uppdragshuset\AO\Tenant\TenantServiceProvider::class

这对我来说很有意义,也很有效。但是现在我正在开发的包也有它自己的依赖项,其中许多依赖包也包含 laravel 5 服务提供者,所以我必须手动将它们全部包含在 laravel5 安装中才能使它们工作。

但我猜测一定有一种方法可以在我自己创建的包中注册这些依赖服务提供者,这样我只需要注册上面提到的一个提供者。问题是我不知道该怎么做,也无法在任何地方找到类似的引用资料。如何从 composer 包本身注册多个服务提供者?

最佳答案

所以我终于想出了如何从 composer 包本身注册依赖的服务提供者。

我的包中有主要的 TenantServiceProvider,它应该挂接到主应用程序的路由中,并且还负责发布迁移、配置等。

事实证明,我可以使用 App 外观上的 register() 方法通过同一提供者注册任何依赖的服务提供者,并在我的 main 的 register 方法中调用它TenantServiceProvider 像这样:

public function register()
{
include __DIR__.'/routes.php';

App::register(RepositoryServiceProvider::class);
App::register(\Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class);
}

通过这种方式,我只需在 laravel 应用程序的 app.php 配置文件中的提供商数组中注册 TenantServiceProvider。当它被调用并调用其上的 register 方法时,所有其他提供程序将通过 App::register() 调用进行注册。希望这对某人有帮助。

关于php - 如何从供应商包本身引导 laravel 5 服务提供者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34655713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com