Skip to content

Andrey461/SimpleMVC-example

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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

About

blog on PHP and MySQL

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 91.8%
  • CSS 3.7%
  • Hack 2.7%
  • JavaScript 1.8%