SunMvc Бесплатно и с открытым исходным кодом - доступно на GitHub

Постройте свой следующий PHP-проект на основе, которая уже работает.

SunMvc - это PHP MVC-фреймворк, созданный вручную компанией Sunhill Technology в Tallinn Technology Hub в Эстонии: маршрутизация, контроллеры, модели, представления, аутентификация, интернационализация и обработка ошибок уже настроены и протестированы в единственном пустом шаблоне. Никакой скрытой магии, никакого раздутого дерева зависимостей - просто PHP-код, который можно прочитать от начала до конца.

500+сайтов используют SunMvc в продакшене
01

Что такое SunMvc?

Каждый проект на основе SunMvc начинается с одного и того же пустого шаблона: маршрутизация, контроллеры/модели/представления, аутентификация, i18n и обработка ошибок уже настроены и протестированы, без какого-либо кода, специфичного для конкретного приложения. Вместо того чтобы каждый раз собирать новый стек с нуля, вы строите следующий проект прямо поверх уже работающей основы - а каждый урок из предыдущего проекта (исправления маршрутизации, поток аутентификации, механизм страницы ошибок) возвращается обратно в шаблон для следующего раза.

02

Как обрабатывается запрос

Запрос проходит по единому, прослеживаемому пути: .htaccess переписывает каждый URL в index.php, который загружает окружение, а затем в фиксированном порядке инициализирует сервисы базы данных, аутентификации, фильтрации и локализации, прежде чем передать управление вашему контроллеру. К моменту выполнения вашего кода маршрутизация уже разобрана, язык уже определён, а защита CSRF уже проверена для каждого POST-запроса - вы пишете функциональность, а не обвязку вокруг неё.

03

Контроллеры, модели, представления

Контроллеры, модели и представления следуют одной и той же предсказуемой структуре во всём проекте: один класс контроллера на сегмент URL, один класс модели для доступа к данным, один файл представления на контроллер (а не на экран). Локальные переменные контроллера напрямую видны в его представлении - не нужно учить отдельный механизм передачи данных во view, не нужно бороться с движком шаблонов.

04

Аутентификация и безопасность из коробки

Аутентификация поставляется в полном виде, а не как упражнение для читателя: вход, регистрация, управление сессиями, сброс пароля и двухфакторная аутентификация TOTP работают из коробки на основе задокументированной схемы базы данных. Защита CSRF выполняется автоматически при каждом POST-запросе. Чувствительные папки заблокированы от прямого доступа на уровне веб-сервера, а не оставлены на усмотрение кода приложения.

05

Интернационализация, которой вы пользуетесь прямо сейчас

Каждая видимая строка во фреймворке проходит через тот же слой перевода, который вы читаете прямо сейчас - эта самая страница отображается на том языке, который вы выбрали, с помощью собственных функций фреймворка _t()/_tr() и плоской таблицы переводов в формате JSON. Добавить язык означает добавить код и файл перевода - изменения в коде не требуются.

06

Библиотека классов Sun*

Небольшая библиотека независимых от фреймворка классов берёт на себя то, что нужно каждому проекту - аутентификацию, гибкий построитель запросов к базе данных, очистку входных данных, отправку почты, CAPTCHA и генерацию карты сайта - намеренно отделённая от движка маршрутизации, чтобы обе части могли развиваться независимо друг от друга.

07

SEO-дружественные URL

Каждый URL по умолчанию дружелюбен к поисковым системам: .htaccess переписывает чистые пути вроде /en/blog/show/42 напрямую в ваш контроллер, без нагромождения строк запроса. Для контента, который заслуживает читаемого URL - заголовка статьи в блоге, названия товара - _s() и slugId() объединяют id записи со слагифицированным заголовком в один сегмент пути (.../blog/show/42-hello-world); сравнивается всегда только id, поэтому ссылка продолжает работать даже после изменения заголовка. SunSitemap, часть библиотеки классов Sun*, генерирует sitemap.xml, sitemap-index.xml и robots.txt прямо из ваших маршрутов, чтобы поисковые системы могли сканировать и индексировать ваш проект без дополнительных инструментов.

08

Документировано, папка за папкой

Каждая структурная папка в системе - Core, System, App/Controllers, App/Models, App/Views, App/Lang и Public - поставляется с собственным файлом README.md, точно объясняющим, что там находится и как это расширять, с реальными примерами из рабочего кода самого этого шаблона, а не гипотетическими фрагментами.

09

Создан для программирования с помощью ИИ

SunMvc спроектирован так, чтобы его могли читать не только люди, но и инструменты кодирования на основе ИИ: откройте папку проекта в редакторе вроде VS Code, направьте на неё ИИ-ассистента - Claude, GitHub Copilot, Cursor, Windsurf, Gemini CLI, - дайте ему прочитать файлы README.md, разбросанные по дереву каталогов, а затем опишите систему, которую хотите построить. Он может выстроить вашу идею прямо поверх основы SunMvc, уже открытой в вашем рабочем пространстве.

10

Один построитель запросов, любая база данных

Каждый обход базы данных в SunMvc проходит через один специально созданный класс, SunDB - единый гибкий построитель запросов, одинаково работающий с MySQL, MSSQL и SQLite. Смените драйвер в одном конфигурационном массиве, и всё продолжает работать точно так же, как раньше: select()/insert()/update()/delete(), paginate() для постраничных результатов, backup() для резервной копии SQL одной командой, maintenance() для анализа/проверки/оптимизации/восстановления каждой таблицы, а также транзакции и помощники для join - без переписывания запросов и без отдельных путей кода для каждого драйвера.

11

Готов к SEO, GEO, AIO, SGE, LLMO и AEO

Эта страница создана для полной совместимости с SEO (Search Engine Optimization), GEO (Generative Engine Optimization), AIO (Artificial Intelligence Optimization), SGE (Search Generative Experience), LLMO (Large Language Model Optimization) и AEO (Answer Engine Optimization): sitemap.xml с разметкой hreflang и канонические URL для классического поиска, robots.txt, явно приветствующий GPTBot, ClaudeBot, PerplexityBot и других ИИ-краулеров, сводка llms.txt, написанная для ИИ-агентов, а также структурированные данные JSON-LD, позволяющие поисковым ИИ-системам получать точные факты, а не разбирать текст.

Начать работу

Склонируйте шаблон, скопируйте .env.example в .env с реальными учётными данными базы данных, импортируйте схему и выберите, какие языки поддерживать. Никакого этапа сборки, никакого lock-файла менеджера пакетов, с которым нужно бороться - рабочий процесс аутентификации и полностью настроенная система i18n присутствуют уже с первого запроса.

Скачать на GitHub