Хорошо, во-первых, я знаю, что это невозможно с 1.2., поэтому я ищу обходной путь.
И нет, к сожалению, я не могу использовать Doctrine 2, потому что мой сервер общего хостинга застрял на PHP 5.2.16, и администратор отказывается устанавливать поддержку PHP 5.3.
Итак, вот моя проблема, основная проблема родитель-потомок:
Допустим, у меня есть базовый класс User
и дочерние классы Customer
, Seller
, Admin
.
Я искал методы наследования: простой (довольно бесполезный IMO), бетон и агрегация столбцов и даже обходной путь для " поддельное наследование таблицы классов"найдено здесь .
Что мне действительно нужно, так это " наследование таблиц классов ", другими словами User
отображается на отдельную таблицу, которая содержит все общие значения, а дочерние таблицы определяют сопоставление с отдельными таблицами, определяя только их конкретные столбцы .
Я отказался от совершенства :) в PHP <5.3, мне действительно все равно, как он будет храниться в БД, но моей объектной модели НУЖНО иметь все функциональные возможности. </p>
Так, что является лучшим выбором для обходного пути?
Это то, что мне нужно.
- Определение базового класса с общими значениями (имя, имя пользователя, пароль, адрес ...)
- Дочерние классы со всеми значениями (общими и их специфическими)
- Дочерние классы должны только видеть их переменные, а не из других дочерних классов (например, у Клиента не должно быть определено
workingHours
, что является специфическим значением Продавца)
- Я должен иметь возможность формировать отношения в базовом классе и в отдельных дочерних классах, и эти отношения должны быть привязаны к конкретному классу (например, класс пользователя должен иметь отношение к классу Address, Restourant класс должен иметь отношение к классу Orders, у Restourant также должно быть определено отношение Address ... но у администратора не может быть отношения Orders, потому что он не имеет ничего общего с заказами)
Было бы неплохо запросить базовую таблицу, но, как я понимаю, это одна из самых больших проблем, это не обязательно.
Надеюсь, вы понимаете мой вопрос. Буду признателен за любой совет, потому что я действительно не знаю, что здесь делать.