[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ООП-engine
Igoreian
Привет!

В процессе разработки сайта (ООП подход) возник ряд вопросов, может быть не только мне будет интересно их обсудить.

Кстати, первые наброски здесь: http://phpforum.ru/index.php?showtopic=42420&st=15

Так вот,

1. Архитектура

3. GUI - шаблоны, css, js, отображение вобщем. Пока смутно представляю.
2. Logic - логические сущности, например "Статьи", "Голосования", "Меню".
1. Core - всякие функции (математика, безопасность, и пр.)

Каждый логический объект - свой класс, он использует как минимум 1 таблицу. Например:

Класс "Комментарии", методы: добавить новый, выбрать существующие, все лежат в одной таблице.

Так вот. Для выполнения запросов нужно открыть sql и выбрать БД. Я это вынес в отдельный класс. Сначала он был самостоятельным объектом (отвечает чисто за то, чтобы открыть БД, хранит все настройки для этого), к нему за дескриптором соединения обращаются все остальные. Потом переделал так, что все логические объекты - его потомки. Но тогда получается, что если за один php-сеанс будет обращение к нескольким логическим объектам, то каждый продублирует процесс открытия БД! Как лучше: вернуть, чтобы все обращались к классу БД, или оставить базовым, и сделать поле соединение статическим (заполнять при первом обращении, потом нет)?


2. Хранение меню
Каждый пункт меню - запись в таблице "Меню", число возможных уровней вложенности - не ограниченно. Связка в дерево идет так: есть колонка "предок" и колонка "потомок", где указываются ссылки (ID) на записи в этой же таблице. Проблема одна: если у пункта несколько потомков, например 3, то придется эту хапись повторить 3 раза, указывая разных потомков. Это нормально? И непонятно, как потому такую таблицу эффективно, без тормозов обходить при выводе меню - не загнется php от числа запросов?

3. Хранение голосований
Пока придумал только вариант с 2 таблицами. В первой записью является вопрос и число проголосовавших, во второй записью является вариант ответа (и каков его процент), связанный по ID с вопросом. Норм?






Спустя 37 минут, 46 секунд (24.03.2011 - 22:21) doberman написал(а):
Цитата (Igoreian @ 24.03.2011 - 18:43)
2. Хранение меню
Каждый пункт меню - запись в таблице "Меню", число возможных уровней вложенности - не ограниченно. Связка в дерево идет так: есть колонка "предок" и колонка "потомок", где указываются ссылки (ID) на записи в этой же таблице. Проблема одна: если у пункта несколько потомков, например 3, то придется эту хапись повторить 3 раза, указывая разных потомков. Это нормально? И непонятно, как потому такую таблицу эффективно, без тормозов обходить при выводе меню - не загнется php от числа запросов?

Не нормально. Обычно обходятся только ссылкой на родителя, а остальное, в том числе и потомков, получают функционально.

Спустя 1 минута, 44 секунды (24.03.2011 - 22:22) doberman написал(а):
Цитата (Igoreian @ 24.03.2011 - 18:43)
3. Хранение голосований
Пока придумал только вариант с 2 таблицами. В первой записью является вопрос и число проголосовавших, во второй записью является вариант ответа (и каков его процент), связанный по ID с вопросом. Норм?

Лучше в одной таблице вопрос. А во второй ответы, их привязка в опросу и количество голосов за каждый ответ.

Спустя 1 день, 21 час, 15 минут, 28 секунд (26.03.2011 - 19:38) Guest написал(а):
"Совершенный код" (С.Макконнелл) перед построением советую
Изначально не правильный процесс проектирования. Разделите систему на пакеты и подсистемы на разных уровнях (пользовательский, программный и т.д.) потом всё остальное. Упрощайте разработку, от сложного к простому.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.