PHPackages                             dv4mp1r3/mmvc - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. dv4mp1r3/mmvc

ActiveLibrary[Framework](/categories/framework)

dv4mp1r3/mmvc
=============

Быстрая реализация MVC опыта ради

050PHP

Since Dec 26Pushed 1y ago2 watchersCompare

[ Source](https://github.com/dv4mp1r3/mmvc)[ Packagist](https://packagist.org/packages/dv4mp1r3/mmvc)[ RSS](/packages/dv4mp1r3-mmvc/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (5)Used By (0)

**Описание**

MMVC - micro mvc. Идея была проста: сделать свою реализацию mvc с максимум 2 потомками в дереве (т.е. не более 3 классов на ветку). При этом хотелось уметь как веб, так и cli, уметь в ORM и билдер запросов.

Этот проект был написан не использования на продакшене ради, а опыта для.

Проект вырос из одного тестового задания, которое требовало MVC с CRUD'ом одной таблицы. Задание самоусложнялось в целях обучения и в этого появилось то, что лежит сейчас в репозитории. К слову, некоторые демопроекты на основе этого имеются (например, [здесь](https://github.com/dv4mp1r3/ipinfo) и [здесь](https://github.com/dv4mp1r3/twitchwebm)), но исключительно чтобы показать работоспособность в лабораторных условиях. Даже после полного покрытия тестами использовать самописные фреймворки не в пет проектах это плохо и не надо так.

**Как оно устроено внутри?**Все запросы перенаправляются в index.php, который инициализирует конфиг (по сути создается ассоциативный массив), далее управление передается объекту Router, задачей которого является инициализировать нужный контроллер и вызвать нужный метод.

**Иерархия классов**

[![](https://camo.githubusercontent.com/26936e2a8b90ff75ccb1be6a041f285abce738022fed592edbe46a5ef2607248/68747470733a2f2f6466766762682e636f6d2f77702d636f6e74656e742f75706c6f6164732f323031382f30332f636c61737365732e706e67)](https://camo.githubusercontent.com/26936e2a8b90ff75ccb1be6a041f285abce738022fed592edbe46a5ef2607248/68747470733a2f2f6466766762682e636f6d2f77702d636f6e74656e742f75706c6f6164732f323031382f30332f636c61737365732e706e67)

**Использование в веб-приложениях**

Допустим мы хотим обрабатывать ссылки /index.php?u=test-test

Для этого необходимо в каталоге controllers создать файл TestController.php и описать в нем класс TestController и метод actionTest:

```
