我正在尝试用我自己的功能扩展一个包。但是包代码在函数调用中有类型提示,指向包中的其他类。 我只是在寻找一种修改代码的方法。
关于我正在尝试做的事情的更多细节 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/