У меня есть пара классов, которые находятся в Entities
Пространство имен. У меня есть интерфейс Entity.php
который имеет 3 метода; parse($data)
, getId()
, __toString()
,
Теперь я использовал объект Car (который implements Entity
) и когда я пошел, чтобы напечатать $ entity->, я получил автозаполнение с parse()
метод. Это имеет смысл, но я действительно хочу, чтобы этот метод не был виден при использовании на более высоких уровнях (внутри представлений / страниц).
Поэтому я попытался сделать этот метод защищенным, затем попытался изменить это и в интерфейсе, но это не позволило мне; msgstr «тип доступа к интерфейсу php должен быть опущен».
Я хочу, чтобы разработчики добавляли parse, getId и __toString в свои реализации Entity, но когда «пользователи» / разработчики используют реальные сущности, они видят только видимый API (который является принудительным getId, __toString и другие методы, специфичные для сущностей). ; getColor, getModel и т. д.).
Должен ли я сделать следующее: Car extends AbstractEntity
а также AbstractEntity implements Entity
?
Задача ещё не решена.
Других решений пока нет …