Skip to content

Latest commit

 

History

History
91 lines (63 loc) · 5.34 KB

File metadata and controls

91 lines (63 loc) · 5.34 KB

SimpleMVC-example

Пример проекта, разработанного на учебном движке (MCV-фреймворке) SimpleMVC.

Установка

ВНИМАНИЕ: о composer-е и остальных моментах см. в уроках по SimpleMVC.

  1. Делаем форк репозитория https://github.com/it-for-free/SimpleMVC-example и клонируем его из своего гитхаб-профиля.
  2. Создаём у себя на машине виртуальный хост с корнем в директории web/ проекта.
  3. Подтягиваем зависимости композером:
composer install
  1. Разворачиваем приложенный дамп basedump.sql.
  2. Создаём копию application/config/web-local-example.php в той же папке с названием application/config/web-local.php и прописываем туда доступы к базе данных.

Открываем сайт в браузере. Удачной разработки!

Использование примера

Авторизационые данные

Используйте для авторизации:

  • Логин: admin
  • Пароль: admin

Разработка

Использование данных конфигурационного файла

Подключаем клсс для работы с даными конфига:

use ItForFree\SimpleMVC\Config;

Получение класса объекта (например, пользователя):

$User = Config::getObject('core.user.class');

получение элемента (без необъходимости инстанцировать класс с таким именем):

$User = Config::get('путь.в.массиве.конфига');

Работа с объектом User

Получить доступ к объекту-синглтону можно так (через конфиг):

$User = Config::getObject('core.user.class');

Система контроля доступа

Получить подробную инфромацию о том почему есть или нет доступа к какому-либо маршрутут для данного пользователя можно распечатав данные метода:

$User->explainAccess('/ваш/маршрут');

ToDo

Что ещё надо улучшить/сделать (самсем универсальное выносим в rusphp остальное относится к ядру т.е. самому SimpleMVC):

  • Добавить html-хэлпер (возм. с участием rusphp)
  • Несовершенный контроль доступа -- rules лучше сделать методом (чтобы, возможно, что-то вычислять динамически). Ввести пседонимы @ и ? для роли зарегистрированного пользователя и гостя.
  • Сделать отдачу 404 в ответ на найденные контроллеры или их действия, аналогично подумать над передачей кодов для других ошибок (исключений SimpleMVC)
  • Возможно, надо пересмотреть свзимоотношения трейта конторля доступа, контроллера и класса пользоватлея -- м.б. трейт надо вынуть из контроллера и сделать либо независимым либо перенести в класс пользователя.
  • Проверить работу класса, управляющего сессией, на предмет блокировок и "в целом".
  • Добавить систему asset-ов, тогда напр. CSS и JS бутстрапа можно было бы вытягивать composer-ом пакет уже есть, необходимо добработать и внедрить it-for-free/php-simple-assets
  • Добавить класс (виджет) для работы с меню, который мог бы выставлять активный элемент, проверяя маршрут.
  • Прикрутить миграции.
  • Добавить виджет для "хлебных крошек".
  • Создать отдельно класс модели и отдельно класс модели для работы с БД (наследющийся от 1-ого).
  • Описать интерфейсы для всех классов приложения, перечисленных в конфиге.
  • Сделать объекты конфигурабельными.
  • Проверить возможность установки явного времени действия сессии (авторизация).
  • Сделать обработку ситуации отсутствия доступа более "мягкой" (без вообще непрехватываемого исключения).

Полезные материалы