Skip to content

WalkWeb/DW-Framework

Repository files navigation

DW-Framework – минималистичный и производительный MVC-фреймворк

Он был написан для следующих целей:

  • «Хочешь разобраться как что-то работает – напиши свой аналог с нуля». Мне было интересно как работают MVC-фреймворки, и чтобы разобраться в этом я написал свой 😈
  • Получить фреймворк с максимальной производительностью – по этой причине не используются интерфейсы, не используются стандартные PSR Request/Response, переменные окружения (конфиг сделан через константы) и прочее.
  • В качестве отдыха от навороченной и тяжелой связки Symfony+Doctrine с которой работаю на обычной работе уже последние 5 лет.

Если вам интересно посмотреть пример качественного ООП — загляните в Battle Module. В противоположность этому проекту, там я заморочился с качественным ООП, но производительность, разумеется, страдает (чем больше ООП-наворотов и абстракций — тем хуже производительность).

Установка

cd /var/www/

git clone https://github.com/WalkWeb/DW-Framework.git dw-framework.loc

cd dw-framework.loc

composer i

Копируем config.php переименовываем в config.local.php и указываем нужные параметры

Выполнение миграций и фикстур:

make migration

make fixture

Далее необходимо настроить локальный домен (nginx/apache/встроенный веб-сервер в php — на ваш выбор)

Запуск тестов

Запуск тестов:

make test

Запуск покрытия кода тестами:

make coverage

Результат можно посмотреть в директории html.

Демо-пользователь

login: Login-1

password: 12345

Покрытие тестами

alt text

Планы

  • Перевод README.md и всех комментариев в коде на английский
  • Добавить phpstan
  • Добавить проверку code style
Класс Контейнер Статика Примечание
Captcha +
Connection +
Cookie +
Csrf +
Logger +
Migration
Runtime +
Session + Убрать статику
Validator +
Request +
Mailer +

P.S.

Первая версия самописного микрофреймворка, просто чтобы ужаснуться :)

About

My self-written micro MVC framework

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages