如何在程序包中从运行时取消注册或覆盖已注册的ServiceProvider?

时间:2014-08-08 15:51:00

标签: laravel laravel-4 composer-php service-provider

我正在注册我自己的自定义FormBuilder和HtmlBuilder类,它们扩展了作曲家包中的原生Laravel对应物。但是,我很难在运行时在我的应用程序中识别它们,而无需从app.php配置中的providers数组中手动​​删除'Illuminate\Html\HtmlServiceProvider'

我需要能够在运行时以某种方式实现这一目标。

  1. 有没有办法在运行时覆盖注册服务提供商?
  2. 如果没有,有没有办法在运行时删除注册服务提供商?
  3. 是否有更好/更有效/更有效的方法来实现这一目标?

2 个答案:

答案 0 :(得分:0)

该数组的重点是,您可以用自己的替换依赖...继续并更改/删除它:)

答案 1 :(得分:0)

如果要从服务提供商中删除服务,只需将其设置为null。或者,将其替换为您的服务。

app()->instance(SomeClass::class, null);