我有这个
class A {...}
class B extends A {...}
class Parent {
public function setObj(A $obj) { .... }
}
class Child extends Parent {
public function setObj(B $obj) { .... }
}
显示此消息:
严格警告:Child::setObj()的声明应该与require_once()
中的Parent::setObj(A $obj)兼容
为什么我得到这个警告?
你的代码应该像
class A {...}
class B extends A {...}
class Parent {
public function setObj(A $obj) { .... }
}
class Child extends Parent {
public function setObj(A $obj) { .... }
}
,因为您使用具有相同名称但具有其他签名的方法覆盖了Parent::setObj(A)
。
参见:https://softwareengineering.stackexchange.com/questions/227766/changing-method-signature-for-implementing-classes-in-php