Git Product home page Git Product logo

simplemvc-example's Introduction

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

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

simplemvc-example's People

Contributors

vedro-compota avatar melisa014 avatar toyrik avatar testgithubsite avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.