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

Документация разработчика

ВНИМАНИЕ: текстовая документация находится в процессе разработки, её содержимое может быть неполным, для лучшего понимания работы системы обратитесь к специальному разделу на сайте (там есть ссылки на видео).

  1. Введение
  2. Конфигурация приложения
  3. Маршрутизация
  4. Контроллеры
  5. Модели
  6. Представления
  7. Макеты (Layouts) представлений
  8. Авторизация и Конроль доступа. Работа с текущим пользователем
  9. Система работы с JS и CSS и управления локальными зависимостями между файлами (Asset-ы)
  10. (черновик) Обработка исключений

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

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

use ItForFree\SimpleMVC\Config;

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

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

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

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

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

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

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

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

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

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

ToDo

Не надо вникать

Не надо вникать - мелкие правки

  • ItForFree\SimpleMVC\Router\WebRouter::link() -- добавить вторым параметром список get-параметров, отличных от route

Не надо вникать - более крупное

  • Добавить типизацию везде, где только можно на ядро и приложение-пример

Надо вникать

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

Новые замечания:

  • Добавить интерфейс для контроллеров (имеет смысл, если переделать свойство получения пути к макету на метод).

Старые замечания:

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

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

simplemvc-example's People

Contributors

vedro-compota avatar melisa014 avatar toyrik avatar romakip avatar newdeveloper111 avatar testgithubsite avatar pavel-klimenko 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.