Radiance |
Дата: Вторник, 03.05.2016, 10:11 | Сообщение # 1
|
Боец
Сообщений: 209
Статус: Offline
|
Привет. Виталик камбекается на СМ, и сразу же решил пильнуть масштабную тему, с достаточно интересной направленностью.
Сразу поясню - эта тема будет писаться не за раз и не за два. А по мере поступления времени и настроения.
Итак, сначала немного теории, потом чуть-чуть практики, следом ху*к-ху*к, и в продакшн.
Собственно, уже не один и не два раза ко мне обращзались с заказами по разработке UCP для самп-серверов. Панельки разработаны, деньги уплачены, проекты... не запустились. Ну да ладно, и такое бывает.
Собственно, в чем суть вообще UCP? Как то посмотрев по потребностям заказчиков в последнее время вышло следующее: 1. Удобный менеджмент аккаунта со стороны пользователя - регистрация, управление балансом и безопасностью аккаунта, саппорт-система для общения с администрацией. 2. Удобныое такое, ласповое администрирование всех аккаунтов (для админов), с нужными функциями. 3. Архиохренительный и простой антиавторег со стороны UCP в виде различных квестов - от ответов на вопросы, до похода за хлебом для администратора.
Начнём с внутренней архитектуры проекта, и как оно все будет работать.
Для мелких проектов у меня давно готов простенький каркас, на основе MVC-архитектуры (что такое MVC и с чем его едят - гуляйте в вики). Если в трех словах, мы имеем единую точку входа, которая вызывает маршрутизатор (роутер), тот на основе имеющихся маршрутов определяет нужный нам контроллер (интерфейс общения с пользователем), который в свою очередь, в соответствии нужным нам экшеном (методом) обрабатывает запросы пользователя и генерирует ту или иную страницу. Контроллер же использует методы модели, которые представляют собой всего лишь функции общения с базой данных.
Собственно, корень сайта выгляит следующим образом:
Код index.php // Точка входа - core // Системная директория --- models // Директория моделей --- controllers // Директория контроллеров --- views // Директория представлений (шаблонов) --- classes // Директория со вспомогательными классами - public // Директория с всяким открытым шлаком --- css // Директория с файлами стилей --- js // Директория с файлами жс-скриптов --- img // директория с изображениями.
Приведу наглядную линейку работы сей системы
1. Пользователь обращается к точке входа 2. Вызывается класс роутера, который определяет текущий маршрут (URL) 3. Роутер проверяет наличие такого маршрута 3.1. Если такого маршрута нет - отдается 404 ошибка и останавливается обработка 3.2. Если такой маршрут есть переходим к шагу 4 4. На основе маршрута определяется нужный контроллер и экшен для обработки 5. Вызывается контроллер и экшен с нужными свойствами. 6. Производится обработка данных контроллером, генерируется готовый ответ 7. Ответ отдается пользователю.
Всё просто, в принципе.
Каждый контроллер и каждая модель представляет собой дочерний класс, вызываемый из под родительского класса роутера.
Отдельно для генериции "морды", тобишь, конечного результата в виде хтмль страницы будет работать отдельный класс шаблонизатора. Нужно это для, во первых, упрощения кода, во вторых, для избежания попытки избеения нас верстальщиками на конечном этапе разработки и минимизации возможных косяков со стороны, опять же, верстальщиков на бэкенде, ибо эти гады могут и неправильно скопипиздить что нибудь.
На этом первую часть закончим. Тема будет постепенно редактироваться и обновляться, до появления конечного результата.
Радик камбек :D
|
|
|
|
Niloka-CM |
Дата: Вторник, 31.05.2016, 07:59 | Сообщение # 2
|
Боец
Сообщений: 63
Статус: Offline
|
Отличная статья!
|
|
|
|