Я пытаюсь написать библиотеку на основе Doctrine Extensions , которая обеспечивает этот интерфейс:
namespace Gedmo\Mapping;
use Doctrine\Common\Persistence\Mapping\ClassMetadata;
interface Driver {
public function readExtendedMetadata(ClassMetadata $meta, array &$config);
public function setOriginalDriver($driver);
}
В своем собственном коде я реализую этот интерфейс:
namespace Avit\Schedulable\Mapping\Driver;
use Gedmo\Mapping\Driver,
Doctrine\Common\Persistence\Mapping\ClassMetadata,
Doctrine\Common\Annotations\AnnotationReader;
class Annotation implements Driver {
public function readExtendedMetadata(ClassMetadata $meta, array &$config) {
// my implementation
}
}
Получаемая ошибка говорит: Объявление Avit \ Schedulable \ Mapping \ Driver \ Annotation :: readExtendedMetadata () должно быть совместимо с Gedmo \ Mapping \ Driver :: readExtendedMetadata ()
Я могу избежать ошибки, если уберу подсказку типа ClassMetadata
в моем методе.
Я погуглил некоторую информацию о том, что эта ошибка возникает, когда пространство имен не соответствует. Это имеет смысл, так как я объявляю этот класс в своем собственном пространстве имен, однако я псевдоним того же пространства имен Doctrine для ClassMetadata
, которое использует оригинальный интерфейс Driver
.
Почему подсказка типа не распознается?