Php 在循环中注册Laravel服务提供商

Php 在循环中注册Laravel服务提供商,php,laravel,laravel-5,Php,Laravel,Laravel 5,我正在尝试添加功能,以便在应用程序中启用插件。为此,我想为PluginManager类注册一个服务提供商,该类将扫描/Plugin目录,查找最终用户“安装”的插件(即拖放到其中)。我不希望最终用户必须手动将每个插件的服务提供者添加到标准提供者数组中 我希望这些已安装的插件都有自己的服务提供商。那么,是否可以从PluginManager的服务提供者的循环中动态注册这些服务提供者,该循环将添加到标准提供者数组中?是否可能使用App::register()方法 这是psuedo代码,但我的想法大致如下

我正在尝试添加功能,以便在应用程序中启用插件。为此,我想为PluginManager类注册一个服务提供商,该类将扫描/Plugin目录,查找最终用户“安装”的插件(即拖放到其中)。我不希望最终用户必须手动将每个插件的服务提供者添加到标准提供者数组中

我希望这些已安装的插件都有自己的服务提供商。那么,是否可以从PluginManager的服务提供者的循环中动态注册这些服务提供者,该循环将添加到标准提供者数组中?是否可能使用App::register()方法

这是psuedo代码,但我的想法大致如下:

PluginManagerServiceProvider.php

您是否尝试使用:

App::register('FooServiceProvider');

??如果你的提供者是自动加载的,那就应该可以了。如果不是,您很可能必须手动自动加载它们,然后调用上面的每一个。

这在4.2的手动条目中的“运行时注册服务提供商”标题下进行了说明-Time@MaksymCierzniak这就是我在上面的循环中建议的,但是使用$this->app->register($plugin->getServiceProviderPath);而不是应用外观,因为$this->App已经可用。我的问题是,以这种方式从单个服务提供商(在本例中为PluginManagerServiceProvider)的register方法加载其他服务提供商可以吗?此外,在其服务提供商中实例化PluginManager类可以吗(例如,在我有
$PluginManager=$this->app->make('PluginManager'));
?为什么不呢?:)如果这是您所需要的,那么就去做吧,服务提供商使用起来并不昂贵,他们的目的只是注册一些绑定和其他东西,所以您肯定不应该对这个解决方案有任何问题。关于第二个问题,是的,从提供程序加载PluginManager是绝对正确的,毕竟这应该是您创建的服务提供程序的目的;)@MaksymCierzniak感谢您提供的信息。我以前没有使用过服务提供商,所以我只是不想一开始就走错了路,不得不进一步重构所有东西。无论如何,我个人认为你所做的没有任何问题。我刚刚在4.2安装上做的一个快速测试表明,将插件服务提供程序添加到
app/config/app.php
并在其中注册其他服务提供程序实际上会触发动态注册的插件提供程序,因此这样做应该不会有任何问题。
App::register('FooServiceProvider');