我正在尝试使用自己的功能扩展软件包.但是,程序包代码在函数调用中具有对作为程序包一部分的其他类的类型提示.
我只是在寻找一种修改代码的方法.
有关我正在尝试做什么的更多详细信息
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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。