Сложные datatype'ы

Для доступа к форумам необходимо авторизоваться. Это можно сделать здесь

Автор Сообщение

Евгений Суров

Чт, 20 августа 2009 15:00:07

Добрый вечер.

У меня вопрос к экспертам. Следующая "проблема". Определен datatype GMapRoute -- кастомный тип который состоит из двух классов: eZGmapRoute и eZGmapRouteType. Первый класс-контейнер данных, второй -- соответственно класс-интерфейс унаследованный от eZDataType.
Соответственно данные-члены первого класса сериализуются в XML и сохраняются в базу плюс есть 2 шаблона для ввода и просмотра данных этого типа.

Теперь задача усложняется - клиент требует определить еще один datatype GMapRoadSegment который содержит ссылку на дорогу (трассу), километр начала сегмента и километр конца сегмента а также определенный выше GMapRoute.

Внимание вопрос: можно ли определить новый datatype используя уже существующий? То есть сделать так чтобы GMapRoadSegment содержал данные-члены:?

- road_id - int (простой тип PHP)
- km_begin - float (простой тип PHP)
- km_end - float (простой тип PHP)
- route - eZGmapRoute (класс определенный выше)

Поимеем ли мы в таком случае какую-либо модульность? Либо придется полностью переделывать логику как edit/view шаблонов так и сохранение/чтение данных из базы?

Существуют ли в принципе datatype'ы содержащие другие datatype'ы?

Заранее спасибо.

-Gene

Сергей Гедеон

Вт, 25 августа 2009 10:55:56

брр.. дататайп, который содержит другой дататайп это слишком сложно для моего понимания, но все может быть

Мне кажется в Вашем случае логичней просто создать экстеншн куда скопировать все файлы существующего экстеншна с дататайпом... Потом переименовать там все и дописать нужные фичи. Или требуется какая-то связь между текущим дататайпом и новым?

===----
Радоваться жизни можно тихо...
----====

Евгений Суров

Пт, 4 сентября 2009 8:32:57

Я понимаю что городить огород не стОит, но кагбе хотелось не прибегать к размножению кода.
Копи-паст shit-approach насколько я знаю
В данном проекте так и поступил - сделал новый extension добавив в него файлы из первого.
Идея была в том чтобы оба дататайпа и экстеншна развивались параллельно
Спасибо за ответ anyway

-Gene

Сергей Гедеон

Пт, 4 сентября 2009 9:33:46

Ну если в eZP php-код с классами дататайпов подключается инклюдами и принципы ООП никто не отменял, то думаю спокойно можно будет наследовать в одном классе методы другого класса (читай: "дататайпа" )

===----
Радоваться жизни можно тихо...
----====