Диплом: Разработка Internet магазина сантехники ИП Беляев Р.С.

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
61
Таблица 12
Таблица Users (Пользователи)
Атрибут
Поле
таблицы
Тип
данных
Размер
Обязательность
значений
Идентификатор
id
integer
4
Да
ФИО
userfio
varchar
255
Да
Логин
login
varchar
255
Да
Пароль
password
varchar
255
Да
Телефон
phone
varchar
255
Да
Почта
email
varchar
255
Да
Таблица 13
Таблица Role(Роли)
Атрибут
Поле
таблицы
Тип
данных
Размер
Обязательность
значений
Идентификатор
id
integer
4
Да
Название
caption
varchar
255
Да
Таблица 14
Таблица Role_users (роли пользователей)
Атрибут
Поле
таблицы
Тип
данных
Размер
Обязательность
значений
Пользователь
userid
integer
4
Да
Роль
roleid
integer
4
Да
Таблица 15
Таблица Order (Заказы)
Атрибут
Поле
таблицы
Тип
данных
Размер
Обязательность
значений
Номер
id
integer
4
Да
Клиент
authorid
integer
4
Да
Статус
statusid
integer
4
Да
Общая сумма
заказа
currency
decimal
10
Да
Параметры
доставки
delivary
text
65655
Нет
Дата и время
createdAt
datetime
10
Да
Таблица 16
Таблица Order_products (Товары в заказах)
Атрибут
Поле
таблицы
Тип
данных
Размер
Обязательность
значений
Идентификатор
id
integer
4
Да
Товар
productid
integer
4
Да
Заказ
orderid
integer
4
Да
Цена
price
decimal
10
Да
Количество
quantity
integer
1
Да
Таблица 17
Таблица Sections (разделы сайта)
Атрибут
Поле
таблицы
Тип
данных
Размер
Обязательность
значений
Идентификатор
id
integer
4
Да
Название
caption
varchar
255
Да
Текст
texts
text
65655
Да
62
Автор
authorid
integer
4
Да
Опубликован?
active
tinyint
1
Нет
Таблица 18
Таблица OrderStatus (Статусы заказа)
Атрибут
Поле
таблицы
Тип
данных
Размер
Обязательность
значений
Идентификатор
id
integer
4
Да
Название
caption
varchar
255
Да
Таблица 19
Таблица Complect (Комплект)
Атрибут
Поле
таблицы
Тип
данных
Размер
Обязательность
значений
Идентификатор
id
integer
4
Да
Короткое
описание
small
varchar
255
Да
Длинное
описание
texts
text
65655
Да
ЧПУ
alias
varchar
255
Да
Цена
price
decimal
10
Да
Главное
изображение
image
varchar
255
Да
Активен
active
tinyint
1
Нет
Таблица 20
Таблица Complectimages (Фотографии комплекта)
Атрибут
Поле
таблицы
Тип
данных
Размер
Обязательность
значений
Идентификатор
id
integer
4
Да
Название
caption
varchar
255
Да
Путь к файлу
image
varchar
255
Да
Комплект
comlectid
integer
4
Да
Таблица 21
Таблица Complect_product (Товары комплекта)
Атрибут
Поле
таблицы
Тип
данных
Размер
Обязательность
значений
Идентификатор
id
integer
4
Да
Товар
productif
integer
4
Да
Комплект
complectid
integer
4
Да
Обязателен
req
tinyint
1
Нет
2.3.3 Структурная схема пакета (дерево вызова программных модулей)
Популярность языка php обусловила появление большого числа
фреймворков, основанных на нем. Фреймворк – программная платформа,
определяющая структуру программной системы; программное обеспечение,
63
облегчающее разработку и объединение разных компонентов большого
программного проекта.
Для написания интернет-магазина использовался фреймворк языка php
Symfony 2.
Symfony 2 – самый популярный PHP-фреймворк в мире. Он включает в
себя весь набор инструментов, используемый для быстрой разработки веб-
приложений, и при этом абсолютно ничего не навязывает создаваемому
приложению. Разработчик может быстро начать работу, используя
дистрибутив Symfony2.
Сильные стороны Symfony 2:
Высокая скорость работы за счет использования шаблонизатора
под именем Twig, который использует оптимизированный PHP-код;
Гибкость в настройке - Symfony позволяет конфигурировать
приложения в трех различных форматах: аннотации, XML, YML. Есть
возможность использовать все конфигурации одновременно;
Расширяемость – поскольку Symfony основан на концепции DI
(слабая связанность), программист может в любое время расширять
приложение за счет подключения новых бандлов, которые минимально
влияют на работу других бандлов, но зато возможна конфигурация их
совместной работы;
Стабильность – длительное время поддержки версий;
Ориентированность на разработчика - Symfony имеет очень
удобную консоль и для того, чтобы программист не выполнял рутинную
работу, консоль Symfony делает генерацию определенного кода вместо
программиста с помощью определенных команд.
Symfony 2 – это набор компонентов, таких как:
HttpFoundation – данный компонент Symfony отвечает за
обработку запросов и ответов приложения (Request и Response
64
соответвенно). Также он содержит в себе классы, которые позволяют
программисту заниматься работой с файлами и сессией;
Routing – компонент, который занимается маршрутизацией в
приложении и позволяет конфигурировать, каким именно образом должны
обрабатываться URL;
Form – компонент, который позволяет программисту легко и
удобно генерировать, а также управлять формами: простыми или
загрузочными;
Validator – набор классов, который позволяет программисту
проверять данные на корректность. Содержит в себе множество правил для
проверок: начиная простой проверкой на пустоту объекта, заканчивая
различными сложными правилами.
ClassLoader – библиотека, которая позволяет подключать в
систему PHP-классы без использования явного require.
Templating – тулкит для загрузки/рендеринга шаблонов. Также
поддерживается множественное наследование шаблонов (шаблонизатор
Twig);
Security – библиотека, которая создана для решения вопросов,
которые касаются различных типов безопасности, при создании приложения;
Translation – компонент, которые позволяет реализовать
многоязычность сайта.
Данный фреймворк работает с подходом к программированию,
называемый Model-view-controller (MVC, «модель-представление-
контроллер», «модель-вид-контроллер»).
Основная идея данного подхода заключается в разделении данных, их
представлениях и обработку действий пользователей на три больших группы:
Модель (англ. Model). Модель предоставляет знания: данные и
методы работы с этими данными, реагирует на запросы, изменяя своё
65
состояние. Объекты данной группы не содержат информации, как эти знания
можно визуализировать.
Представление, вид (англ. View). Отвечает за отображение
информации (визуализацию). Часто в качестве представления выступает
форма (окно) с графическими элементами. Главная задача – представить
информацию, хранимой в модели в виде, воспринимаемым пользователем.
Контроллер (англ. Controller). Обеспечивает связь между
пользователем и системой: контролирует ввод данных пользователем и
использует модель и представление для реализации необходимой реакции.
Важно отметить, что как представление, так и контроллер зависят от
модели. Однако модель не зависит ни от представления, ни от контроллера.
Тем самым достигается назначение такого разделения: оно позволяет строить
модель независимо от визуального представления, а также создавать
несколько различных представлений для одной модели.
Общая схема архитектуры интернет-магазина согласно данной
парадигмы изображена на рисунке 20.
MODEL (Модель)
VIEW
(Представление)
CONTROLLER
(Контролер)
USER
Отображение
Воздействие
Управление
Обновления
Рисунок 20 – Архитектура ИС (Model-view-controller)
Главная особенность объектно-ориентированного программирования
(ООП) заключается в том, что при использовании этого метода происходит
оперирование объектами. Под объектом в программировании понимается
совокупность свойств, методов их обработки и событий, на которые данные
объект может реагировать. Под свойствами объекта обычно понимают
66
структуры данных, характерные для данного объекта, или другими словами –
набор свойств характеризуют какой-либо объект. Метод – это способ
влияния на свойства объекта, обычно используют два метода – установка
какому-то свойству определенного значения, и считывание значения этого
свойства. Объединение данных и свойственных им процедур обработки в
одном объекте, называется инкапсуляцией и является одним из важнейших
принципов ООП.
Еще одним фундаментальным понятием ООП является класс.
Классом называют шаблон, на основе которого создается конкретный
программные объект. То есть в классе описаны все свойства и методы,
определяющие поведение каждого объекта, созданного на основе этого
класса. Также принято каждый объект, созданный на основе класса называть
экземпляром этого класса.
Следующими важнейшими принципами ООП являются наследование и
полиморфизм.
Наследование – такая организация классов, которая подразумевает
создание новых классов на базе существующих и позволяет классу потомку
иметь (наследовать) все свойства класса – родителя.
Полиморфизм – означает, что рожденные объекты обладают
информацией о том, какие методы они должны использовать в зависимости
от того, в каком месте цепочки (дерева классов) они находятся, иными
словами это концепция, реализующая "множество методов в одном
интерфейсе".
В структуре программных модулей разработанной ИС Можно четко
проследить механизм наследования. Всего присутствует три родительских
класса: InitializableController.php, AbstractEntity.php, AbstractFormType.php.
Первый является родителем для всех контроллеров ИС, он содержит
объявления таких методов и свойств, которые в дальнейшем используются в
каждом контроллере:
проверка авторизации;
67
массив форм;
менеджер для доступа к модели;
массив объектов модели;
получение http-запроса;
доступ к сессии пользователя;
доступ к объекту текущего пользователя;
доступ к текущему представлению;
массив для отображения текущего раздела в панели навигации.
Второй родительский класс является родителем для всех сущностей. В
нем выделено три основных свойства (атрибута сущности):
дата создания;
идентификатор;
дата изменения;
конструктор создания нового объекта класса;
триггер обновления объекта, который меняет свойство «Дата
последнего обновления записи».
Последний родительский класс – это класс для форм ИС. В нем также
задаются основные константы, конструктор.
Следует заметить, что все описанные выше родительские классы
наследуются от фундаментальных классов фреймворка Symfony, которые
содержат базовые свойства и методы, разделяющие эти классы на три группы
MVC.
Список разработанных программных модулей и их назначений
представлен в таблице 22.
Таблица 22
Программные модули.
Название
Описание
routing.yml
Файл с настройками маршрутов для
маршрутизатора Symfony
DefaultContoller.php
Класс контроллера, обрабатывающий
маршруты витрины интернет-магазина
DefaultAdminController.php
Класс контроллера, содержащий методы
68
Название
Описание
для отображения главной страницы панели
администрирования
ProductCategoryController.php
Класс контроллера, содержащий методы
для отображения данных и форм о
категориях товаров, обработки
отправленных форм
ProductController.php
Класс контроллера, содержащий методы
для отображения данных и форм о товарах,
обработки отправленных форм
SectionController.php
Класс контроллера, содержащий методы
для отображения данных и форм о
разделах сайта, обработки отправленных
форм
SliderController.php
Класс контроллера, содержащий методы
для отображения данных и форм,
предназначенных для управления
слайдшоу на главной странице сайта,
обработки отправленных форм
OrderController.php
Класс контроллера, содержащий методы
для отображения данных и форм,
предназначенных для просмотра заказов
клиентов и управления ими
SecurityController.php
Класс контроллера, содержащий методы и
функции, необходимые для реализации
функций авторизации, выхода из сайта,
управления профилем пользователя
UsersController.php
Класс контроллера, содержащий методы
для отображения данных и форм о
пользователях, обработки отправленных
форм
User.php
Класс модели, содержащий атрибуты и
методы для работы с объектом
пользователя
Order.php
Класс модели, содержащий атрибуты и
методы для работы с объектом заказа
покупателя
ImageUpload.php
Класс модели, содержащий атрибуты и
методы для работы с объектом фотографии
товара
Product.php
Класс модели, содержащий атрибуты и
методы для работы с объектом техники
ProductCategory.php
Класс модели, содержащий атрибуты и
методы для работы с объектом категории
техники
Role.php
Класс модели, содержащий атрибуты и
методы для работы с объектом роли
пользователя
Section.php
Класс модели, содержащий атрибуты и
методы для работы с объектом раздела
сайта
Slider.php
Класс модели, содержащий атрибуты и
69
Название
Описание
методы для работы с объектом слайда для
реализации слайдшоу на главной странице
ImageUploadFormType.php
Класс формы управления фотографиями
товара
LoginFormType.php
Класс формы авторизации
ProductFormType.php
Класс формы управления товарами
ProductFilterFormType.php
Класс формы для реализации фильтра в
списке товаров
ProductCategoryFormType.php
Класс формы управления данными
категории товаров
ProductCategoryFilterFormType.php
Класс формы для реализации фильтра в
списке категорий товаров
ProductCommentFormType.php
Класс формы для отправки комментария к
товару
OrderFormType.php
Класс формы для создания и управления
заказов
ProfileFormType.php
Класс формы для реализации работы с
профилем пользователя
RegistrarionFormType.php
Класс формы для регистрации пользователя
SectionFormType.php
Класс формы для реализации работы с
разделом сайта
SliderFormType.php
Класс формы для реализации работы со
слайдером на главной странице
UserFormType.php
Класс формы для реализации работы с
данными пользователя
UserFilterType.php
Класс формы для реализации фильтра в
списке пользователей
2.3.4 Описание программных модулей
Каждый контролер обрабатывает запросы, отправляемые по
соответствующему маршруту. Описание того, какой контроллер должен
обрабатывать тот или иной маршрут оформляется в виде отдельного файла:
routing.yml.
Пример записи (главная страница ИС):
index:
path: /
defaults: { _controller: "AppBundle:DefaultController:Index" }
Такая запись означает следующее:
первая строка – название маршрута (index);
вторая строка – путь, или URL-адрес маршрута (/);
70
третья строка – имя класса контроллера, который должен
обрабатывать маршрут, а также метод этого контроллера, ответственный
именно за этот маршрут;
Обработка маршрута выполняется в контроллере DefaultController.php.
При переходе по маршруту (отправке запроса на url /) начинает свою работу
метод IndexAction. Данный метод запрашивает из базы данных информацию
по товарам, который нужно отображать на главной странице, список
категорий товаров для отображения меню каталога товаров, список разделов
сайта и параметры слайдера. Затем все данные передаются в шаблон
index.html.twig.
Для обработки шаблонов и формирования на их основе html-страниц,
отображаемых пользователю, используется распространенный шаблонизатор
twig. Twig – компилирующий обработчик шаблонов с открытым исходным
кодом, написанный на языке программирования PHP. Синтаксис,
поддерживаемый шаблонизатором позволяет использовать в шаблонах
ветвления, циклы, а удобная структура кода позволяет значительно сократить
итоговый объем программного кода. Также стоит отметить, что
шаблонизатор генерирует на основе своих шаблонов чистый php-код,
который обрабатывается значительно быстрее.
Если для запрашиваемого маршрута требуется наличие определенных
прав у пользователя (например, для открытия панели администрирования
нужны права сотрудника компании), то происходит переадресация на форму
входа (если посетитель сайта не авторизован), либо на главную страницу
сайта (если пользователь авторизован, но прав у него нет). Переадресация на
форму авторизации выполняется по маршруту «/login», который
обрабатывает контроллер SecurityController.php).
При переадресации на этот маршрут, срабатывает метод loginAction
контроллера SecurityController.php. Он создает экземпляр формы
LoginFormType.php и обрабатывает её отправку. На рисунке 21 приведен
алгоритм работы данного метода.

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)
Value-based education: ценности в системе образования и способы их реализации на уроке английского языка. Опыт Европейских стран