Здравствуйте, Нахлобуч, Вы писали:
Н>Здравствуйте, Дм.Григорьев, Вы писали:
ДГ>>Прежде всего, по причине невозможности кеширования объектов между HTTP-запросами, и по причине отсутствия реализации Hibernate для PHP,
все запросы приходится оптимизировать вручную.
Н>Во-первых, кэширование можно и самому (если уж очень припрет) сделать.
Как? Что-то мне подсказывает, что ты имеешь в виду совершенно другое кеширование, и вообще читаешь мои посты через строчку.
ДГ>>Раскладывать вручную оптимизированный запрос в "правильную" объектную модель — занятие для больших оригиналов. Нужны очень веские причины, чтобы заниматься подобным извращением.
Н>Частично соглашусь. Вручную гидрировать "правильную" объектную модель и правда занятие не из приятных. Однако же в случае, когда классы Domain Model представляют собой просто DTO на стероидах (чего достаточно для простых приложений), делать это, по-моему, не так и сложно.
Гы. "Просто DTO"? "Не так уж и сложно"? Тебе никогда, видать, не приходилось поднимать несколько объектов одним SQL-запросом из нескольких сджойненных таблиц (чтобы не плодить отдельныё SQL-запрос на каждую фигню) — именно это я и имел в виду.
ДГ>>Далее. Все результаты SQL-запросов где-то используются, верно? Так случилось, что большинство результатов просто отдаётся клиенту (исключения — какие-то проверки перед модификацией базы). А теперь смотри: результаты используются в XSLT-преобразовании.
Н>Сам с таким подходом не сталкивался, но сдается мне, что при более-менее сложной верстке этот XSLT будет феерически объемным.
Неправильно тебе сдаётся.
Н>Если я правильно понял логику, то MenuManager получается очень перегруженным и у него образуется слишком большая зона ответственности — и получение объектов из БД, и разруливание вопросов с полномочиями. А сие не есть правильно
.
Ага, вот и я о чём.
Н>ты очень сильно завязываешься на имена столбцов — они у тебя есть и в тексте запроса, и во всяких индексаторах, и в XSLT. По мне, так это дюже нехорошо.
Гы, а ты очень сильно завяжешься на имена полей объектов. Те же яйца, только в профиль, да ещё и коду будет в десять раз больше.
Н>Если же использовать какие-никакие классы-DTO, то в общем случае получается, что для разных типов пользователей (админы, простые смертные и т.д.) требуются разные DTO с разным набором полей. Получаем экспоненциальный рост количества классов.
Н>Получается, что для упрощения своей же жизни все вопросы отображения и сокрытия той или иной информации должны быть решены на уровне View'а (если говорми про MVP/MVC). Но тогда выходит, что либо придется использовать какой-нибудь шаблонизатор (из оных для PHP знаю только Smarty), либо делать все XSLT-преобразования на сервере.
Вах, как всё стало просто!
Засунь свой Smarty куда подальше. Сложную вёрстку (и редизайн) на нём сделать гораздо труднее, чем на XSLT. И кстати, ООП-модель предметной области к Smarty прикручивается также криво, как и к XSLT. PHP вообще под ООП не заточен.
И ещё раз повторяю для тупых — XSLT на клиент выносится из соображений производительности. При этом код серверной части менятся минимально (к вопросу о лёгкости сопровождения).
Н>Разницы между 0.05 секунды и 0.5 секунды (такой оверхед надо еще постараться получить) пользователь вряд ли заметит.
Оверхед в 10 раз тебе не существенен? Вот на этом месте спор можно смело заканчивать.

При хорошей нагрузке твои ООП-творения благополучно ляжут.
Н>Ну неужто в интернет-магазинах и службах знакомств ты текст запроса тоже в коде писал?
Да. И я считаю это вполне оправданным. Поскольку на мои аргументы ты не обращаешь внимания, доказывать тебе что-либо дальше никакого смысла не вижу.
ДГ>>И я готов поспорить, что твои ООП-заморочки (так называемые "упрощения") приведут только к усложнению кода и существенному снижению его эффективности.
Н>Эффективность -- это в смысле быстродействие? А как же преждевременная оптимизация -- корень всех зол?
Повторяю для тупых — у меня было достаточно проектов, чтобы наэкспериментироваться и выработать подход. Я не с бухты-барахты стал писать так, как пишу. Некоторые сайты мне пришлось переписывать с "правильных" моделей на работающие и держащие нагрузку. А ты либо обыкновенный теоретик без опыта, либо не писал на PHP ничего серьёзного (т.е. опять же без опыта).
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>