5.1 Физическая структура Web-сервера
Так как при разработке приложения использовался современный PHP Фреймворк Symfony 4, вобравший в себя лучшие решения проектирования HTTP Фреймворков, то физическая структура сайта реализована максимально гибко, масштабируемо и универсально. Отдельные логические части приложения, выделены в физические модули которые подключаются автозагрузчиком к ядру Фреймворка.
Внутри каждого из модуля соблюдается строгая структура директорий, продиктованная Фреймворком и использованным в нем частично шаблоном проектирования MVC (Model View Controller) – Модель Вид Контроллер, смысл которого состоит в разделении трех основных составляющих любого web-приложения использующего базу данных (БД).
Модель – часть приложения, отвечающая за работу с базой данных.
Поскольку в работе данного web-сервиса для работы с базой данных была использована система объектно-реляционного представления хранимых данных (ORM) Doctrine 2, а для хранения информации была выбрана документо-ориентированная система управления базами данных (СУБД) MongoDB, то модели представлены PHP классами, находящимися в одноименных файлах и располагающихся в директории Document внутри каждого модуля.
В этих PHP классах с помощью специальных аннотаций предназначенных для ORM Doctrine 2, описаны хранимые в базе коллекции данных.
Вид – сугубо визуальная часть приложения.
Так как Фреймворк Symfony 4 имеет свой собственный шаблонизатор TWIG то файлы, отвечающие за визуальное представление информации, имеют расширение .twig и расположены в директории Recources/views каждого модуля.
Контроллер – часть приложения, отвечающая за обработку HTTP запроса пришедшего от пользователя и выдаче соответствующего контента.
Контроллерами в приложении являются PHP классы? находящиеся в файлах с постфиксом Controller и располагающихся в директории Controller каждого модуля.
Другие не менее важные файлы, непосредственно не относящиеся к принципу размещения файлов, продиктованному шаблоном проектирования MVC, располагаются в следующих директориях:
- Admin – файлы, отвечающие за отображение части данного модуля в администраторской части сайта.
- Form – файлы, которые отвечают за формы и их обработку.
- Recources/Config – файлы конфигураций данного модуля – очень важны, так как здесь расположены настройки всех URL-путей модуля, при работе приложения специальная система маршрутизации Фреймворка сопоставляет с помощью этих файлов конфигурации URL-пути с соответствующими методами в файлах контроллеров. Такая организация работы соответствует основному принципу шаблона проектирования, так же использованному во Фреймворке Symfony 4, под названием Front Controller.
- DependencyInjection – содержит файлы, отвечающие за реализацию ещё одного шаблона проектирования, использованного во Фреймворке, Dependency Injection (Внедрение Зависимости), что позволяет регистрировать свои сервисы и использовать их во всем проекте.
Сервисы – одна из ключевых возможностей Фреймворка Symfony 4. Позволяет создавать логически независимые, и универсальные службы, представленные одним или множеством зависящих друг от друга классов, имея в дальнейшем к ним простой доступ практически из любого места с помощью, так называемого контейнера служб. А главной особенностью такого шаблона проектирования является то, что все зависимости и необходимые исходные данные внедряются в глубине ядра, и делают процесс использования служб в различных модулях очень простым.
5.2 Описание структуры и формата страниц
Все web-страницы приложения имеют формат собственного, встроенного в Фреймворк Symfony 4, шаблонизатора - .twig.
Что позволяет использовать в них конструкции этого шаблонизатора, а так же наследовать файлы, отвечающие за отображение, друг от друга.
Таким образом, любая страница проекта наследует базовый шаблон вида, содержащий основные элементы разметки, блок главного меню и другие элементы, являющиеся общими для всех страниц.
Одной из особенностей шаблонизатора является использование блоков – специальных конструкций, которые можно переопределять в унаследованных шаблонах.
Таким образом, в базовом шаблоне подключаемые скрипты и каскадные таблицы стилей помещены в соответствующие блоки – что дает возможность переопределять их в дочерних шаблонах, подключая те или иные скрипты либо таблицы стилей, необходимые в конкретном месте.
5.3 Описание ограничений доступа к данным
Поскольку Фреймворк Symfony 4 представляет собой набор модулей отвечающих за те или иные функции, то для ограничения доступа к данным на основе авторизации, и для самого процесса авторизации был использован компонент Security. Выполнен он в виде универсального модуля, который регистрируется в автозагрузчике модулей и настраивается при помощи специального файла конфигурации security.yml, который находится в директории с общими для всего проекта настройками app/config.
В данном файле конфигурации описываются следующие параметры:
- Алгоритм шифрования паролей пользователей;
- Уровни доступа к каждой из частей приложения. Здесь указывается URL-путь или часть пути, и роль, которую должен иметь авторизированный пользователь для доступа к разделу сайта, сопоставленному данному пути.
- Существующие роли пользователей и их иерархия.
Приложение имеет три пользовательские роли:
- ROLE_ADMIN – роль администратора (имеет доступ к панели администрирования сайта).
- ROLE_USER – роль базового пользователя (данная роль соответствует не авторизированному пользователю).
Для ограничения доступа к редактированию той или иной информации, используется служба «security» с помощью которой проверяется, какой именно пользователь авторизирован, и либо открывается доступ для редактирования каких-нибудь данных, либо нет. Например, для отображения на странице профиля пользователя ссылок на редактирование данного профиля используется такая проверка на соответствие авторизированного пользователя с пользователем, чья страница профиля отображена.
5.4 Описание используемых функций и процедур
Главными функциональными частями приложения являются классы контроллеры, содержашие все основные процедуры и функции преобразующие хапрос пользователя в соответствующий запросу контент.
В приложении задействованы следующие контроллеры:
- BaseController – базовый контроллер который содержит некоторые общие методы, используемые в других контроллерах, такие как проверка на авторизацию пользователя, на соответствие пользователя той или иной роли, функции получения объекта текущего авторизированного пользователя.
Данный класс наследуется от базового класса контроллера Фреймворка Symfony 4, в котором доступны многие вспомогательные функции.
Все ниже следующие классы контроллеров унаследованы от контроллера BaseController.
- PostController – отображает страницу «Блог» со всеми имеющимися статьями.
- ContactController – отвечает за раздел обратной связи, содержит методы.
- FaqController – отвечает за страницу часто задаваемых вопросов.
- IndividualOrderController и OrderController – отвечают за оформление стандартного и индивидуального заказов.
- PartnerController – отвечают за страницу «Партнеры». Помимо информации, там размещаются промо-коды и акции.
- ConfigController – отвечает за подключение стронних веб-ресурсов.
Дата | Выполнено, % |
---|---|
2020-05-28 17:57:34 | 10 |
2020-05-28 14:57:31 | 100 |