【问题标题】:PHP: Override a service-provider that calls a method that's not in my Laravel?PHP:覆盖调用不在我的 Laravel 中的方法的服务提供者?
【发布时间】:2020-03-11 18:40:41
【问题描述】:

我有一个使用 Laravel 5.2 开发的旧网站,由于各种原因无法升级。

我有一个供应商包,在一个ServiceProviderboot() 方法中,有这一行:

 $this->loadMigrationsFrom($somewhere);

...但是这种方法在 Laravel 5.2 中不存在。

覆盖这个错误的方法调用的最干净方法是什么?

我突然想到,我可能只是能够编写一个新的服务提供者类来替换这个类,因为它真的似乎所做的只是注册一个控制台命令。但是有没有办法“覆盖”它?

【问题讨论】:

  • 我认为您只需要在 composer.json 文件中限制依赖版本,以防止需要 loadMigrationsFrom 的 ServiceProvider 版本
  • Hmmmm... 希望有这样的版本,而电话一直没有在那里? ……嗯,考虑到这个包的性质,这并不是一个好主意。看起来开发人员随着时间的推移对其进行了很多更改,我不想回到这些更改中。添加对“loadMigrationsFrom()”的调用结果只是众多更改中的一个。不过,谢谢你的想法。

标签: php laravel laravel-5


【解决方案1】:

在这种情况下,我能够通过创建一个新的 ServiceProvider 并使用它而不是 config/app.php 中的供应商版本来绕过该问题。

【讨论】:

    猜你喜欢
    • 2014-07-10
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多