【问题标题】:Extend Laravel class used by vendor扩展供应商使用的 Laravel 类
【发布时间】:2018-03-29 19:23:51
【问题描述】:

我想要什么

扩展供应商使用的 Laravel 类,特别是这个:https://github.com/laracasts/flashFlash/Message.php 类。

我为什么想要

为了自定义添加一些类参数。

我尝试了什么

我在谷歌搜索和浏览其他问题时发现的所有内容。

我已经创建了自己的服务提供者:

use Laracasts\Flash\FlashServiceProvider as BaseServiceProvider;

class FlashServiceProvider extends BaseServiceProvider
{

    public function register()
    {
        $this->app->singleton( 'flash', function() {
            return $this->app->make( 'App\Extensions\Laracasts\Flash\FlashNotifier' );
        } );
    }
}

甚至成功地将自定义函数添加到App\Extensions\Laracasts\Flash\FlashNotifier 类。

还是不行

即使我成功地扩展了FlashNotifier 类。我仍然遇到问题,因为它一直使用原始的 Messages 类,而不是我的。

问题

如何强制我的扩展 FlashNotifier 类使用我的 Messages 版本而不是原始版本?

【问题讨论】:

  • 您是否注册了您的自定义服务提供商?
  • 是的,我做到了。 App\Providers\FlashServiceProvider::class(甚至试图删除原始提供者行Laracasts\Flash\FlashServiceProvider::class)。
  • 你能发布 git 存储库的 url 吗?
  • @JeffPuckett 这是问题所在。
  • 是的,我是原始包的贡献者,我在询问您的应用程序存储库。

标签: php laravel class laravel-5


【解决方案1】:

您可以采用不同的方法,而不是扩展类。

创建一个laracasts/flash 的分支,然后您可以将其加载到您的项目中

loading a package from a VCS repository 的 Composer 文档

来自文档

这有几个用例。最常见的是维护您自己的第三方库的分支。如果您正在为您的项目使用某个库并且您决定更改库中的某些内容,您将希望您的项目使用修补版本...

【讨论】:

    猜你喜欢
    • 2019-02-18
    • 2019-04-05
    • 2017-05-05
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 2014-12-13
    相关资源
    最近更新 更多