Я пытаюсь расширить пакет своими собственными функциональными возможностями.Но код пакета имеет подсказки типа в вызовах функций для других классов, которые являются частью пакета.Я просто ищу способ изменить код.
Подробнее о том, что я пытаюсь сделать на https://laracasts.com/discuss/channels/general-discussion/type-hint-hell
Я пытался изменить код для использования интерфейсов и аннотаций,но я не могу предотвратить ошибку "Declaration of class .... must be compatible with"
.
Это то, что я пытаюсь сделать в двух словах.
Пакет имеет такой тип установки.
class ClassA {}
class ClassB {
public function makeClassA(ClassA $classA) : ClassA
{
return $classA;
}
}
Это то, что я пытаюсь сделать.
class ClassANew {}
class ClassC extends ClassB {
public function makeClassA(ClassANew $classA) : ClassANew
{
return $classA;
}
}
Я получаю следующую ошибку,
"Неустранимая ошибка PHP: Объявление ClassC :: makeClassA (ClassANew$ classA): ClassANew должен быть совместим с ClassB :: makeClassA (ClassA $ classA): ClassA "
Я знаю, что могу просто разветвить код и удалить заблокированный classA
из ClassB
, но я пытался этого не делать.
Если я собирался раскошелиться на код, я посмотрел, как сохранить исходную предпосылку исходного кода.Итак, я попытался изменить ClassA
ссылки в ClassB
на ClassAInterface
, но я получаю ту же ошибку.
Возможно ли то, что я пытаюсь сделать?