Обойти тот факт, что ORM Class уже расширяет класс DB, и вам нужно расширить его от класса Abstract - PullRequest
0 голосов
/ 22 февраля 2012

Моя проблема связана с PHP, но он может потенциально относиться к любому другому языку с объектным реляционным картографом.

Скажем, у меня есть класс Event, который расширяет DbObject и Exception, который расширяет DbObject, но я хочу, чтобы они оба вышли из абстрактного класса TimePeriod.Оба объекта являются объектами ORM.

Почему?Потому что я не хочу вручную кодировать getStartTimeStamp () для каждого типа класса, который имеет дату начала и окончания.

Сейчас я использую интерфейсы, но я чувствую, что это действительно вредит СУХОЙ.

Должен ли я просто перепроектировать его так, чтобы абстрактный класс TimePeriod расширял Dbobject и реализовывал каждый объект, расширяемый из него?Или есть лучшее решение?

1 Ответ

1 голос
/ 28 февраля 2012

Общее решение проблемы множественного наследования, с которой вы сталкиваетесь, - агрегация / композиция.

Это также делает ваш дизайн более понятным.В конце концов, исключение не может быть периодом времени.

Итак, вам нужно создать класс TimePeriod и передать объекты этого класса в Exception и Event.Затем вы можете либо напрямую вызвать getStartTimeStamp () для объекта периода времени, например:

$event->getTimePeriod()->getStartTimeStamp();

, либо создать методы обтекания и вызывать их вместо этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...