Задать вопрос
@kip_34
Хороший

Как хранить дочерние классы в бд?

Здравствуйте! При изучении ООП возник такой вопрос. Например, есть изделия 4-х видов, есть несколько общих свойств, остальные специфичные. В php я создам родительский класс с общими свойствами и методами и 4 дочерних со специфичными. А в бд мне нужно просто создать 4 таблицы для каждого вида? Или есть другой способ?
  • Вопрос задан
  • 458 просмотров
Подписаться 1 Средний 2 комментария
Ответ пользователя Северное Сияние К ответам на вопрос (4)
php666
@php666
PHP-макака
Да, 4 таблицы. Но это у вас должна быть такая бизнес-логика, которая это оправдывает. Уверены что оно вам действительно требуется?

В 90% случаев достаточно одной модели и у нее разные свойства.

Например, пользователь - у него есть свойство пол. Или набор свойств, лежащих в отдельной таблице.

То, что вы описываете - это наследование от интерфейса Гуманоид нескольких моделей, допустим, модели Человека и Инопланетянина. Там будет 2 таблицы и две разные модели, имплементирующие интерфейс/наследующие абстрактный класс Гуманоид. Но будет совершенно разная реализация методов.

Но я сомневаюсь, что на этапе изучения надо так себе жизнь усложнять темой наследования моделей. Я, например, за свою практику, только один раз с подобной системой столкнулся, работая в телекоммуникационой компании, где бизнес-логика была представлена в виде отражения реальной инфраструктуры (сервера наследовались, свитчи, роутеры и пр). В большинстве случаев в веб-задачах такими усложнениями и не пахнет.

Или взять какой-нибудь портал типа Авто-ру. Я не думаю, что объекты объявлений имеют разные типы (легковое//грузовые машины/спецтехника) - там все это также представлено наверняка в виде свойств одного объекта Объявление.
Ответ написан