如何覆盖已设置参数类型提示的php函数?
作者:互联网
我正在尝试使用自己的功能扩展软件包.但是,程序包代码在函数调用中具有对作为程序包一部分的其他类的类型提示.
我只是在寻找一种修改代码的方法.
有关我正在尝试做什么的更多详细信息
https://laracasts.com/discuss/channels/general-discussion/type-hint-hell
我试图更改代码以使用接口和摘要,但是我似乎无法阻止“类声明….必须与”兼容的错误.
简而言之,这就是我要做的事情.
程序包具有这种类型的设置.
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”
我知道我可以分叉代码并从ClassB中删除锁定的classA,但是我试图不这样做.
如果我要分叉代码,那么我研究了如何保持原始代码的前提.因此,我尝试将ClassB中的ClassA引用更改为ClassAInterface,但出现相同的错误.
我想做的事可能吗?
解决方法:
不,这是不可能的.
原因如下:Why is overriding method parameters a violation of strict standards in PHP?
标签:overwrite,hint,php,class 来源: https://codeday.me/bug/20191108/2005829.html