【问题标题】:Laravel 5.7 Override vendor class and extend old oneLaravel 5.7 覆盖供应商类并扩展旧类
【发布时间】:2019-04-05 10:33:33
【问题描述】:

所以解决方案是创建一个新的 ServiceProvider。

此解决方案适用于覆盖

php artisan make:provider MyServiceProvider

扩展了供应商服务提供者(在 config/app.php 中找到)。在该 ServiceProvider 中,在重写的 register 方法中添加我的别名

 $loader->alias('Vendor\VendorName\Class', 'App\Vendor\MyCustomClass');

https://stackoverflow.com/a/47926486/10589868

现在,如何扩展被覆盖的类?我试过这个:

$loader->alias('ClassParent', 'Vendor\VendorName\Class');
$loader->alias('Vendor\VendorName\Class', 'App\Vendor\MyCustomClass');
...
class MyCustomClass extends ClassParent {} // not working

【问题讨论】:

    标签: php laravel alias


    【解决方案1】:

    您需要做的第一件事是扩展 Vendor 类:

    class MyCustomClass extends Vendor\VendorName\Class {}
    

    现在,该类具有 Vendor 类的属性和方法以及您添加的属性和方法。

    然后,您的自定义类可以成为别名:

     $loader->alias('App\Vendor\MyCustomClass', 'Vendor\VendorName\Class');
    

    【讨论】:

    • 不工作,也许我不够清楚......现在它只是扩展了旧类。我想覆盖它,而不是直接使用它。此类已在其他供应商类中使用,我想使用我的覆盖和扩展类。 exp。 VendorClass1 {} VendorClass2 { 使用 VendorClass1; } MyClass extend VendorClass1 {} ---- MyClass 是 VendorClass1 的别名 VendorClass2 使用的是 MyClass,而不是 VendorClass1
    • @JanGrb 哦,我明白了。我认为这会对您有所帮助:stackoverflow.com/questions/31435747/…。这也给出了一些外部提示:stackoverflow.com/questions/22884764/laravel-extend-form-class
    • 我想这正是我想要的。 $loader->alias去哪儿了?
    猜你喜欢
    • 1970-01-01
    • 2019-02-18
    • 2018-06-04
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 2020-07-05
    • 2021-06-07
    • 1970-01-01
    相关资源
    最近更新 更多