Диплом: Разработка интернет-магазина авторских товаров (на примере ООО «Тоника»)

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
33
Полиморфизм предполагает использование одних и тех же названий для
похожих, но различающихся в техническом смысле задач. Полиморфизм
позволяет манипулировать объектами через создание стандартных интерфейсов
для похожих действий.
Инкапсуляцией называют механизм, объединяющий данные и
обрабатывающий их код, как единое целое. [9]
Для создания и тестирования в процессе разработки интернет-магазина
будет использоваться локальный сервер. Это позволит быстрее и удобнее
производить отладку работы.
Также было принято решение в процессе разработки использовать
распределенную систему управления версиями Git и сохранять версии проекта
на репозитории GitHub. Одной из ключевых возможностей, предоставляемых
системой git, является возможность в случае появления ошибок вернуться к
предыдущим версиям файлов. Каждый раз, когда пользователь добавляет новую
версию проекта, система git сохраняет слепок состояния файлов на текущий
момент. В случае, если файл не менялся, git не сохраняет его, а создает ссылку
на ранее сохраненный экземпляр с последними изменениями. [20]
Основным средством разработки интернет-магазина был избран
фреймворк Laravel.
Laravel - это фреймворк с открытым исходным кодом, созданный для web-
разработки с использованием архитектурной модели MVC (Model-View-
Controller). Фреймворк Laravel был выпущен под лицензией MIT.
Создатель Laravel Taylor Otwell взял лучшее из уже существовавших на тот
момент PHP-фреймфорков, а также из Ruby on Rails, ASP.NET MVC, Sinatra и
создал собственный фреймворк, который максимально просто решает рутинные
задачи программистов. [28]
Фреймворком называется программная платформа, которая определяет
структуру программной системы, программное обеспечение, которое упрощает
разработку и объединение разных компонентов большого проекта.
34
Основное отличие фреймворка от библиотеки состоит в том, что
библиотека не определяет архитектуру проекта и не накладывает на нее
ограничений, но может быть использована в проекте в виде комплекса
подпрограмм близкой функциональности. Фреймворк, в свою очередь, диктует
четкие правила создания архитектуры приложения, создавая уже на начальном
этапе разработки некий «каркас», который в дальнейшем разработчик будет
изменять и расширять в соответствии с заданными рамками. В частности,
фреймворк Laravel ориентирован на разработку сайтов с использованием
архитектурной модели MVC.
Еще одно важное отличие от библиотеки, объединяющей в себе набор
функций близкой тематики, фреймворк не ограничен одной тематикой и может
содержать большое количество разных по тематике библиотек. [35]
Как уже было отмечено выше, Laravel - это фреймворк, основанный на
языке PHP и концепции MVC, этим обуславливается простота и чистота кода,
такой код прост в использовании и отладке. Также Laravel предоставляет
множество собственных функций,создание которых на PHP потребовало бы
больших временных затрат (пользовательская аутентификация и авторизация,
валидация форм, маршрутизация, совместное использование данных,
хеширование паролей). [27]
Концепция MVC позволяет разделить данные, внешнее представление и
обработку пользовательских запросов на три компонента. Этим определяется
наличие трех составляющих веб-фреймворка: Модель (Model), Представление
(View) и Контроллер (Controller) (Рисунок 2).
35
Рисунок 2. Концепция MVC
Модель включает всю бизнес-логику web-приложения, ее правила и
функции, реагирует на запросы, исходящие от контроллера, изменяя свое
состояние, предоставляет данные, необходимые компоненту представления.
Модель не занимается визуализацией данных и не имеет точек взаимодействия с
пользователем, ее задача заключается в предоставлении доступа к данным и
управлении ими.
Представление обеспечивает визуальное отображение данных на стороне
пользователя.
Контроллер является связующим звеном между пользователем и системой,
обеспечивает контроль и перенаправление данных между ними. Он реагирует на
пользовательские запросы, интерпретирует данные, введенные пользователем,
работает с моделью и представлением. [35]
Основная задача применения концепции MVC состоит в разделении
бизнес-логики (модели) и визуализации (представления). Как видно на рисунке
2, модель и представление не взаимодействуют напрямую; их общение
происходит через контроллер. Такое разделение предоставляет возможность
повторного использования кода. В web-разработке такая необходимость
возникает довольно часто, например, верхняя часть сайта (header) и нижняя часть
сайта (footer) одинаковы для большинства страниц.
36
Концепция MVC позволяет решать следующие задачи:
1. Представление одних и тех же данных в разном виде (например, в виде
таблицы или списка). Для этого можно создать несколько различных
представлений (view) для одной модели, не затрагивая при этом реализацию
модели.
2. Возможность изменения реакции на действия пользователя (например, клик
мыши, ввод данных) путем изменения контроллера, при этом не затрагивая
представление.
3. Поскольку многие программисты специализируются на frontend или backend-
разработке, то разделение бизнес-логики и представления позволяет удобнее
организовать процесс совместной работы. [22]
Среди прочих наиболее ценных возможностей, предоставляемых
фреймворком Laravel, можно отметить следующие:
Eloquent ORM — представляет из себя реализацию шаблона
проектирования ActiveRecord на PHP, позволяет задавать отношения
между объектами базы данных. Помимо обычных CRUD-операций (create,
read, update, delete - операции создания, чтения, редактирования и
удаления, производимые с данными), в ней есть мягкое удаление (при
выборе такого типа удаления модель остается в базе данных, но в поле
«deleted_at» будет установлено значение текущего времени. Таким
образом «мягко» удаленные модели не включаются в результаты
обработки запроса, но по-прежнему хранятся в базе.).
Автозагрузка классов - механизм автоматической загрузки классов PHP,
избавляющий от необходимости подключать файлы в include. Такой
механизм предотвращает загрузку лишних компонентов, поскольку
загружаются только те, которые действительно используются (то есть «по
требованию»). [28]
Маршрутизация. В Laravel маршрутизация используется для направления
пользовательского запроса к соответствующему контроллеру. Маршруты
приложения могут быть заданы в файле (или нескольких файлах при
37
необходимости, например, прописать отдельные маршруты для
административной части).
Миграции - система управления версиями, созданная для баз данных. Они
позволяют отслеживать изменения и создавать таблицы базы данных,
используя команды консоли. [29]
Наличие собственного шаблонизатора Blade
Наличие собственной системы для отправки e-mail-сообщений,
возможности для работы с событиями
Удобное кеширование [27]
Таким образом, применение фреймворка Laravel при разработке дает следующие
преимущества:
упрощение и ускорение процесса разработки, отличная документация на
официальном сайте;
сокращение временных и финансовых затрат на разработку;
написание качественного кода, отвечающего современным стандартам и
не требующего впоследствии существенного рефакторинга: используются
новейшие возможности PHP (пространства имен, трейты, интерфейсы,
функции замыкания и другие), обеспечивая лучшую производительность
(среди прочего, в версиях Laravel 5.5 и старше по умолчанию используется
PHP 7).
проект, написанный с использованием фреймворка, прост и понятен для
дальнейшего обслуживания и поддержки, в том числе специалистами, не
принимавшими участия в процессе создания конкретного проекта. [28]
Стоит также упомянуть о потенциальном недостатке применения
фреймворков. Поскольку фреймворки, как правило, используют открытый
исходный код, то это снижает их защищенность от внешних угроз. Тем не менее,
нельзя утверждать, что сайты, разработанные на Laravel, недостаточно
безопасны. Стоит подчеркнуть, что Laravel является современным, активно
разрабатываемым фреймворком, над которым работают грамотные
38
специалисты, уделяющие много внимания вопросам безопасности (в частности,
Laravel имеет современную систему хэширования паролей, встроенную защиту
от атак CSRF (межсайтовой подделки запроса), XSS (кросс-сайтового
скриптинга) от SQL-инъекций. [34] И что также немаловажно, новые версии
фреймворка с исправлениями ошибок выходят довольно часто, примерно раз в
полгода, что позволяет рассчитывать на регулярное повышение уровня
безопасности.
39
ГЛАВА 3. ПРОЕКТНАЯ ЧАСТЬ РАЗРАБОТКИ ИНТЕРНЕТ-МАГАЗИНА
ДЛЯ ООО «ТОНИКА»
В этой главе будет поэтапно рассмотрена разработка интернет-магазина
TheCake для ООО «Тоника».
Сбор и анализ требований, определение типа и структуры сайта и
обозначение целей создания сайта были рассмотрены во второй главе.
Для разработки магазина использовались следующие инструменты:
текстовый редактор Sublime Text
Open Server (портативная серверная платформа и программная среда,
созданная специально для веб-разработчиков с целью разработки, отладки
и тестирования веб-проектов)
Фреймворк Laravel
Composer (пакетный менеджер уровня приложений для PHP,
предоставляющий средства по управлению зависимостями в приложении).
С помощью Composer устанавливался фреймворк Laravel, а также
устанавливались и обновлялись дополнительные пакеты.
Laravel Debugbar (специальный пакет, который отображается внизу сайта
в режиме отладки. Он позволяет отследить SQL-запросы к базе данных с
целью их дальнейшей оптимизации, просмотреть, какие шаблоны (view)
подключены на данной странице, работать с объектом Request,
просматривать исключения и много другое. Это существенно облегчает
процесс отладки.)
Git (распределенная система управления версиями)
3.1 Создание дизайна сайта и проектирование интерфейсов
3.1.1 Клиентская часть сайта
40
Дизайн сайта был предоставлен заказчиком. Выбрано оформление в
сдержанных, светло-серых тонах, чтобы сайт выглядел сбалансированно,
поскольку изображения тортов красочные и яркие, что отлично привлекает
внимание. Проектирование интерфейсов производилось, исходя из требований и
пожеланий заказчика.
Главная страница сайта содержит информацию о компании, главное меню
с навигацией и боковое меню «Ассортимент», предлагающее на выбор
различные категории продукции (на данный момент их четыре: «Торты»,
«Пирожные», «Пироги», «Десерты»). Это позволяет перейти к выбору продукта
нужной категории в один клик. Также на главной странице есть баннер,
предлагающий пользователю сделать индивидуальный заказ. При нажатии на
этот баннер пользователь переводится на страницу с формой обратной связи, где
может оставить свои контактные данные и пожелания по выпечке торта под
заказ.
Главное меню клиентской части интернет-магазина включает следующие
разделы: «Главная», «Ассортимент», «Обратная связь», «Контакты»,
«Вход/Выход». Также из главного меню можно попасть на страницу корзины и
в личный кабинет.
После выбора интересующего раздела, происходит переход на
соответствующую страницу, отображающую необходимую информацию.
Страница «Ассортимент» (рисунок 3) содержит карточки товаров и
боковое меню, которое позволяет пользователю отфильтровать товары по
нужной категории. Карточки товаров включают изображение продукта,
название, краткое описание и цену. Также на всех карточках доступна кнопка «В
корзину», что позволяет пользователю в один клик перейти к оформлению
заказа.
По клику на изображение или название продукта происходит переход на
страницу одного продукта с более подробным описанием и более крупным
изображением.
41
Рисунок 3. Страница «Ассортимент» с карточками товаров
Страница «Обратная связь» позволяет пользователю (в том числе
незарегистрированному) оставить сообщение. Это может быть, отзыв,
предложение, индивидуальный заказ.
После заполнения и отправки данной формы менеджеру приходит письмо
на e-mail, содержащее текст сообщения, имя пользователя и его электронный
адрес для связи. Это реализовано через работу с событиями (events) и
«слушателями» (listeners). В момент нажатия пользователем на кнопку
«Отправить сообщение» реализуется POST-запрос и запускается триггер
события «FeedbackWasCreated», ему передается объект Request, содержащий
введенные пользователем данные. На данное событие подписаны три
«слушателя»: FeedbackMailNotify (отправка письма менеджеру),
FeedbackMailCustomerNotify (отправка письма покупателю с подтверждением и
копией сообщения) и FeedbackDBSave (сохранение сообщение в базе данных).
Также на странице «Обратная связь» доступно боковое меню
«Ассортимент» и виджет «Попробуйте наши новинки», в котором динамически
выводятся три самых новых продукта. По клику на изображения новинок
42
происходит переход на страницу выбранного товара.
Страница «Контакты» содержит контактные данные и карту с отметкой
местоположения компании. Контактные данные доступны к редактированию
администратором из административной части.
Страницы аутентификации и регистрации доступны пользователю через
меню «Вход». Страница регистрации (рисунок 4) позволяет создать нового
пользователя с ограниченными правами: он может совершать покупки, а также
просматривать и отменять свои заказы в личном кабинете.
Рисунок 4. Форма регистрации нового пользователя
На странице регистрации происходит валидация введенных пользователем
данных. Это необходимо для безопасности и обеспечения корректности
полученных от пользователя данных. Laravel имеет собственные средства для
валидации пользовательского ввода, на рисунке 5 представлен код, отвечающий
за валидацию.
Как видно на рисунке 5, поля «Имя», «Email», «Пароль» и «Подтверждение пароля»
обязательны для заполнения (required). При этом существуют минимальные и максимальные
значения длин для полей «Имя» и «Пароль», поле «Email» проверяется на соответствие
формату адреса электронной почты, и кроме этого введенный email должен быть уникальным
(то есть в базе данных не должно быть пользователей с таким же email). Поля «Пароль» и

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

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