php - 如何覆盖设置了参数类型提示的 php 函数?

标签 php class overwrite hint

我正在尝试用我自己的功能扩展一个包。但是包代码在函数调用中有类型提示,指向包中的其他类。 我只是在寻找一种修改代码的方法。

关于我正在尝试做的事情的更多细节 https://laracasts.com/discuss/channels/general-discussion/type-hint-hell

我曾尝试更改代码以使用接口(interface)和抽象,但我似乎无法阻止“类的声明....必须兼容”错误。

简而言之,这就是我想要做的事情。

包有这种类型的设置。

class ClassA {}

class ClassB {
    public function makeClassA(ClassA $classA) : ClassA
    {
        return $classA;
    }
}

这就是我想要做的。

class ClassANew {}

class ClassC extends ClassB {
    public function makeClassA(ClassANew $classA) : ClassANew
    {
        return $classA;
    }
}

我收到以下错误,

"PHP Fatal error: Declaration of ClassC::makeClassA(ClassANew $classA): ClassANew must be compatible with ClassB::makeClassA(ClassA $classA): ClassA"

我知道我可以 fork 代码并从 ClassB 中删除锁定的 classA,但我尽量不这样做。

如果我要 fork 代码,我会研究如何维护原始代码的前提。因此,我尝试将 ClassB 中的 ClassA 引用更改为 ClassAInterface,但我遇到了同样的错误。

我想做的事情可行吗?

最佳答案

关于php - 如何覆盖设置了参数类型提示的 php 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55593792/

相关文章:

php - 发生数据库错误错误号: 1066 Not unique table/alias:

c++ - 将指针与 NULL 进行比较时程序崩溃

html - 如果 wget 中使用了 --html-extension,那么 --no-clobber 仍然会覆盖文件吗?

django - 如何扩展django管理员 View ?

C字符串不断相互覆盖

javascript - 输入类型隐藏从 javascript 中的 foreach 传递相同的值

php信号量不起作用

php - 我使用 cakephp3.4.13 进行验证时发生了什么?

python - 以编程方式将模块/函数集转换为 Python 类

python - 如何使一个函数可以被一个类使用但不能被它的python子类使用