Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Архитектура Интернет магазина
 
 автор: Роккер Руслан   (20.02.2012 в 19:43)   письмо автору
 
 

Привет еще раз) Допустим есть интернет магазин(простенький такой)... Есть 3 класса -
1) Пользователь
2)Каталог(допустим 10 товаров)
3)Корзина
Кто нить сможет привести ПОНЯТНУЮ архитектуру сайта? Проще: набор методов и свойств всех трех классов, их взаимодействие. Не надо городить огород, самое базовое) Спасибо)

  Ответить  
 
 автор: Sfinks   (20.02.2012 в 20:13)   письмо автору
 
   для: Роккер Руслан   (20.02.2012 в 19:43)
 

> Есть 3 класса
Мне вот например вообще не понятно зачем тут классы.
Я просто сам сейчас начинаю писать ИнтМаг, и вот сижу и думаю, использовать там где-нить классы или не использовать..... Писать я все один буду, модульность не нужна. Больше пока не вижу причин.....

  Ответить  
 
 автор: cheops   (20.02.2012 в 20:23)   письмо автору
 
   для: Sfinks   (20.02.2012 в 20:13)
 

Классы обычно создают с прицелом на несколько проектов, если ваш класс может одновременно работать в десятке проектов - польза от него большая: повторное использование кода, исправление ошибок сразу в нескольких проектах, ввод своего мини-языка (оперируете пользователями и каталогами, а не строками и числами). Причем вы не теряете гибкости, базовый класс пользователя содержащего имя, пароль, e-mail, возможно пол, и обладающий лишь базовыми методами (регистрация, вход, восстановление пароля и т.п.) можно расширить до "пользователь интернет-магазина" (который уже имеет счет) или "пользователь блог-системы" (который уже имеет статьи, видео-ролики и т.п.). А код базового класса у всех одинаковый и его не нужно переписывать. Единственная заковыка - СУБД :), подружить её с ООП может очень дорого стоить во всех отношениях.

  Ответить  
 
 автор: Sfinks   (20.02.2012 в 20:15)   письмо автору
 
   для: Роккер Руслан   (20.02.2012 в 19:43)
 

  Ответить  
 
 автор: cheops   (20.02.2012 в 20:16)   письмо автору
 
   для: Роккер Руслан   (20.02.2012 в 19:43)
 

Пользователь
- регистрация
- вход
- обновление информации
- восстановление пароля
...
Корзина
- поместить товар
- пересчитать цену (с учетом скидок)
- удалить товар
- сохранить в базу данных (если есть сессионый кэш)
- загрузить в сессию из базы данных (если есть сессионый кэш)
Каталог дробите на подклассы и уже потом из него составляйте класс каталога (если он вообще вам потребуется).

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

  Ответить  
 
 автор: Роккер Руслан   (20.02.2012 в 20:57)   письмо автору
 
   для: cheops   (20.02.2012 в 20:16)
 

Не в дебри не надо... регистрация... вход..... Это вообще потом уже.... Именно методы и свойства класса "пользователь" которые взаимодействуют и классом каталог и корзина) Вы меня немого не так поняли... Ну например метод "добавить товар" - он чей? Пользователя? И какая у него, хоть примерно реализация .. ну и так далее
Каталог дробите на подклассы и уже потом из него составляйте класс каталога (если он вообще вам потребуется). - вот это если честно вообще не понял(((

  Ответить  
 
 автор: cheops   (20.02.2012 в 22:22)   письмо автору
 
   для: Роккер Руслан   (20.02.2012 в 20:57)
 

>Ну например метод "добавить товар" - он чей? Пользователя?
Товар в корзину кладется, значит этим методом лучше корзину снабдить.

>И какая у него, хоть примерно
>реализация .. ну и так далее
Разная может быть, зависит от того, как нагрузку планируете распределять на базу данных, может ли незарегистрированный пользователь иметь корзину, если может, то куда товары добавляются в сессию или сразу в базу данных, а если уйдет не зарегистрировавшись, как мусор собирать... в общем тут много любопытных вопросов и подходов.

>Каталог дробите на подклассы и уже потом из него составляйте класс каталога (если он вообще
>вам потребуется). - вот это если честно вообще не понял(((
Не все, что вы видите должно иметь класс или объект или даже переменную. Например такое понятие как рубль в Интернет-магазине вполне может обойтись и без класса и без объекта и даже без переменной. Строк будет много? Есть строковый тип, который позволяет грубо говоря настрогать объектов-строк (в PHP это называется переменной), пользователей много? Значит можно вводить класс и объекты этого класса для каждого пользователя (объект - это по сути переменная, поведение которой вы программируете в классе). Корзина у пользователей у каждого своя? Значит тоже можно вводить класс и объекты этого класса. Каталогов товара много или он один на всех? Один на всех, а нужен ли класс и единственный объект этого класса? Может проще просто построить один единственный каталог, раз не нужно будет его дублировать? А если очень хочется может тогда класс сделать статическим, чтобы у него вообще объекта не было, а то случайно или намерено создадите 4 объекта каталога, будет ли от этого вам проще?

Вы когда создаете иерархию класса вы создаете язык, а потом уже используя этот язык пишите приложение. Так создайте язык, на котором вам будет удобно разговаривать, чтобы вам не нужно было вспоминать какой метод какому классу принадлежит. Если вы не создадите удобный язык, вы только усложните себе жизнь.

  Ответить  
 
 автор: Роккер Руслан   (20.02.2012 в 21:16)   письмо автору
 
   для: cheops   (20.02.2012 в 20:16)
 

Что то начинаю понимать - "добавить товар" это метод корзины? Типа - setAddGoods ? Так?

  Ответить  
 
 автор: cheops   (20.02.2012 в 22:23)   письмо автору
 
   для: Роккер Руслан   (20.02.2012 в 21:16)
 

Да, только заранее продумайте названия, чтобы они были единообразными.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования