我正在做一个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包本身注册多个服务提供者?
发布于 2018-11-14 14:20:45
更新
由于Laravel5.5,您现在可以通过将以下块添加到包的composer.json中,向依赖于它的应用程序注册包的服务提供者:
...
"extra": {
"laravel": {
"providers": [
"Acme\\Package\\ServiceProvider"
]
}
},
...
请参阅文档:https://laravel.com/docs/5.5/packages#package-discovery
https://stackoverflow.com/questions/34655713
复制相似问题