Я думаю, будет намного легче увидеть проблему в примере кода, чем писать вопрос в первую очередь. Вот мой код 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 как совместимые. Я делаю что-то неправильно? Спасибо!