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