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