![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| gibbzy |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 25.1.2008 Репутация: нет Всего: 3 |
Возникли вопросы по реализации кусков интернет магазина. Точнее сказать всё понятно только меня пугают некоторые вещи.
Ниже приведу 2 класса, для продукта и категории.
Второй класс для категорий.
Очень удобный подход мне всё нравиться, только вот вызывает опасения то что при создании нового обьекта конструктор делает запрос к БД ввиду чего многие функкции становятся очень опасными в плане производительности. яркий пример функция $category->getProducts(). Вижу 2 решения этой проблемы: 1. убрать конструкторы добавить геттеры в каждой функции get() делать запрос. 2. Кэшировать страницы, и не выполнять запросы лишний раз когда страница не изменяется, в рамках того что контент интернет магазина может менять только администратор, думаю что это будет очень хорошим решением. Вообще такие вопросы как например получение списка продуктов для категории я использовал mysql функцию JOIN LEFT. Вопросы: 1. Как сделать подобную структуру более оптимизированной? 2. Что я делаю не так ? 3. Стоит ли использовать статичные функции для добавлления новых элементов или есть ещё какой то вариант? 4. Стоит ли параметры обьектов обьявлять как public или лучше использовать геттеры для получения их значений? Это сообщение отредактировал(а) gibbzy - 18.1.2009, 19:30 |
||||
|
|||||
| gibbzy |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 25.1.2008 Репутация: нет Всего: 3 |
ну раз все молчат сообщу что ответ нашел сам
1. 1.1 использовать кэширование на стороне сервера. 1.2 проапгрейдить конструктор продуктов следующим образом
2. 2.1 у меня не верный метод getChild() в классе Сategory это я просто проглядел 2.2 метод product ->add следует переименовать в create и возвращать экземпляр класса product 2.3 существует проблема с синхронизацией если обьект продукт не уничтожен тогда деструктор не вызывается и данные не обновляются. Решается очень просто вмето деструктора делается метод update(<params>) который заносит всё в базу данных сразу. 2.4 есть смысл разделить эти классы на админские и пользовательские, админские наследовать от пользовательских, в пользовательских включать кэширование. 3. ответил в пункте 2.3 4. нет не стоит геттеры это лишние куски кода инкапсулировать эти переменные в класс не стоит, смысла нет. Это сообщение отредактировал(а) gibbzy - 18.1.2009, 19:23 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Для профи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |