No description, website, or topics provided.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
application
images
uploads
web
.composer.json.swp
.gitignore
README.md
basedump.sql
composer.json
composer.lock

README.md

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
  • Пароль: 12345

Разработка

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

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

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-ом
  • Добавить класс (виджет) для работы с меню, который мог бы выставлять активный элемент, проверяя маршрут.
  • Прикрутить миграции.
  • Добавить виджет для "хлебных крошек".
  • Создать отдельно класс модели и отдельно класс модели для работы с БД (наследющийся от 1-ого).
  • Описать интерфейсы для всех классов приложения, перечисленных в конфиге.
  • Сделать объекты конфигурабельными.
  • Проверить возможность установки явного времени действия сессии (авторизация).
  • Сделать обработку ситуации отсутствия доступа более "мягкой" (без вообще непрехватываемого исключения).

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