【问题标题】:How do I override a 'used' class?如何覆盖“使用”类?
【发布时间】:2019-12-12 09:31:54
【问题描述】:

我正在使用 Laravel 5.8,并且正在尝试从 Vendor 目录修改包类。为了实现这一点,我创建了一个扩展 Vendor 类的新类,我可以替换其中的命名函数——一切都很好。

但是,原来的类“使用”了一个类,我在我的新类中模仿了它,如下所示:

use VendorName\PackageName\OriginalController

// use VendorName\PackageName\SomeClass as StoreRequest; How can I replace this...
use App\Http\Requests\NewRequestClass as StoreRequest; // ... with this..? (not working)

class NewController extends OriginalController {

    private function somefunction(StoreRequest $request){ // This doesn't work; it is still using the StoreReqest defined in OriginalController
        // ...
    }

}

查看 cmets- 是否可以覆盖它?

【问题讨论】:

  • 我从未真正尝试过,但我怀疑您可以通过设置自定义自动加载器来专门捕获原始类何时被请求并加载到您自己的文件中来做到这一点
  • 您的NewRequestClass 是否扩展StoreRequest

标签: php laravel-5 php-7


【解决方案1】:

它通常不可能修改/删除类或函数。不是没有像Classkit 这样的扩展名。但我并不是这种代码的真正粉丝。但是您可以检查这些问题,这可能会有所帮助:

【讨论】:

    猜你喜欢
    • 2019-01-02
    • 2015-05-02
    • 2011-01-20
    • 1970-01-01
    • 2021-10-22
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多