Php类型提示不与接口和抽象类相处?
2022-08-30 20:58:41
我认为在代码示例中看到问题比首先编写问题要容易得多。这是我的php代码:
<?php
interface AnInterface
{
public function method();
}
class AClass implements AnInterface
{
public function method()
{
echo __METHOD__;
}
}
abstract class AnAbstractClass
{
abstract public function method( AnInterface $Object );
}
class ConcreteClass extends AnAbstractClass
{
public function method( AClass $Object )
{
$Object->method();
}
}
$Object1 = new ConcreteClass();
$Object2 = new AClass();
$Object1->method( $Object2 );
上面的代码会导致以下错误:
致命错误:ConcreteClass::method() 的声明必须与 AnAbstractClass::method() 的声明兼容
问题是php似乎没有将AnAbstractClass::method和ConcreteClass::method的签名识别为兼容。我做错了什么吗?谢谢!