Roh*_*han 6 php service-provider laravel laravel-5
我正在开发一个Laravel 5应用程序,现在应用程序的代码应该在多个laravel 5应用程序中重用,这就是为什么我要创建一个composer包然后我想在任意数量的laravel中安装这个包5个应用程序具有相同的功能并在其上构建.
我是作曲家包开发的新手,特别是使用服务提供商将包挂钩到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';
}
}
Run Code Online (Sandbox Code Playgroud)
现在要做到这一点,我只需要通过composer将软件包放入任何全新的Laravel 5安装中,然后我只需更新提供者的数组app.php:
Uppdragshuset\AO\Tenant\TenantServiceProvider::class
Run Code Online (Sandbox Code Playgroud)
这对我来说很有意义并且也有效.但是现在我正在开发的软件包也有自己的依赖项,许多依赖软件包也包含laravel 5服务提供程序,所以我必须在laravel5安装中手动包含所有这些以使它们工作.
但我猜测必须有一种方法来在我自己创建的包中注册这些依赖服务提供者,这样我只需要注册我上面提到的一个提供者.问题是我不知道该怎么做,也无法在任何地方找到类似的参考.如何从composer包本身注册多个服务提供者?
所以我终于想出了如何从composer包本身注册依赖服务提供者.
我TenantServiceProvider在我的包中有main ,它应该挂钩到主应用程序的路由,并且还负责发布迁移,配置等.
事实证明,我可以使用Facade register()上的方法通过相同的提供程序注册任何依赖服务提供者,App并在我的main的register方法中调用它,TenantServiceProvider如下所示:
public function register()
{
include __DIR__.'/routes.php';
App::register(RepositoryServiceProvider::class);
App::register(\Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class);
}
Run Code Online (Sandbox Code Playgroud)
这样我只需要TenantServiceProvider在laravel应用程序的app.php配置文件中注册提供者的数组.当调用它并调用其上的寄存器方法时,将通过App::register()调用注册所有其他提供者.希望这有助于某人.
| 归档时间: |
|
| 查看次数: |
1566 次 |
| 最近记录: |