如何重写 Laravel 包函数

Meh*_*hdi 4 package laravel

我正在使用https://github.com/artesaos/seotools包进行 seo。我试图覆盖位于https://github.com/artesaos/seotools/blob/master/src/SEOTools/SEOMeta.php的 getCanonical 函数,并使其输出为小写。您能指导我该怎么做吗?

Pan*_*ami 5

您可以尝试以下操作:

步骤1:

创建一个扩展 SEOMeta 类的子类并覆盖该getCanonical函数。

Class XyzSEOMeta extends SEOMeta {
    public function getCanonical () {
       // Write your logic here
    }
}
Run Code Online (Sandbox Code Playgroud)

第2步:

为重写的类创建服务提供者。函数的第一个参数bind必须与 Facade 的 Facade 访问器相同SEOMeta(检查此处)。在seotoolsconfig/app.php包的服务提供者之后注册这个门面。:

Class XyzSEOMetaServiceProvider extends ServiceProvider {
    public function register(){
        $this->app->bind('seotools.metatags', function(){
           return new XyzSEOMeta($this->app['config']);
        })
    }
}
Run Code Online (Sandbox Code Playgroud)

你已经准备好了。希望这会有所帮助。

编辑:

上面提到的方法只会覆盖单个类。如果你想改变多个类的逻辑。最好的方法是分叉该项目。更改代码并将其推送到您的分支。使用分叉项目作为您的作曲家依赖项。点击链接了解如何使用私有存储库作为 Composer 依赖项:https://getcomposer.org/doc/05-repositories.md#using-private-repositories