Micron - это простой framework написанный на PHP и ориентированный на компонентную модель построения сайта (HMVC).
📁 core - ядро движка
📁 сonfig
📁 func - ф-ии хелперы (для отправки email-ов, для отображения сообщений, для дебага, форматирвоания, работы с текстом и пр.)
📁 init - тут происходит инициализия базы, роутинга, логгера ошибок и пр.
📁 i - js/css-файлы, картинки, файлы для загрузки (doc, xl, apk и что угодно другое что можно считать asset-ами)
📁 lang - переводы старниц/компонентов
📁 lib - библиотеки установленные не через composer
📁 model - классы для работы с БД (по технологии ActiveRecord т.е. формат вида $user1001 = new UserModel(1001); // Запись из таблицы users с id=1001)
📁 src - php-код страниц/компонентов (controllers)
📁 tmp - скомпилированные js/css-ки и всякие временные файлы (в public должно быть доступны только папки вида _auto_mege_css_js, но не сама папка tmp так как в ней текстовые логи ошибок и их отбражение - это небезопасно)
📁 tpl - шаблоны страниц/компонентов (views)
📁 vendor - библиотеки установленные composer-ом
📄 .env - файл с переменными зависящими от окружения (должно быть для production-а одни, для local-ки другие). Например подключение к БД, или домен сайта
📄 .gitignore - список тех файлов которые должны игнорироваться при коммитах проекта в git
📄 composer.json - библиотеки которые нужно установить в vendor для работы сайта (главный список)
📄 composer.lock - весь список с конкретными версиями и зависимостями установленными в vendor
📄 favicon.ico
📄 index.php - входная точка в движок. Все запросы на сайт (кроме запрос картинок и файлов) идут сюда, а этот файл уже подключает движок из core и нужную страницу из src+tpl
📄 README.md - хелп который вы сейчас читаете
📄 robots.txt - для google/yandex поисковик
- Главный шаблон для сайта (шапка, футер)
- Админка
- Заготовка для пользовательского кабинета
- Пакеровщик (webpack) для работы с sass, less, typescript
- Мультиязычность (каталоговая модель)
- Работа с БД (DbSimple и простые модели)
- Инструменты для debug-а (debug-panel, простая ф-я распечатки -> Xmp, раздел в админке с логами, логирование ошибочных запросов к БД, настройки для DEBUG_MODE)
- Подключён Bootstrap 5 для дизайна
- Подключён и настроен Роутинг (core/init/router) который по умолчанию соотносит uri по правилу: site.com/example -> (src/example.php + tpl/example.php)
- Подключён Vue3 для создания сложных веб-приложений
- Подключён шрифт PTSans как основной
- Переименуйте .env.example в .env и задайте внутри правильные данные для вашего текущего сайта (siteRoot, подключение к БД, режим отображения ошибок, домен для cookie и пр.)
- Сделайте в терминале
composer installчтобы установить зависимости в папку /vendor - (необязательно) Также в терминале зайдите в папку
/i/webpack/и сделайтеnpm run dev(илиnpm run build) чтобы создать скомпилированные js-файлы для локалки (или сервера)
То что скомпилировано webpack-ом автоматически подключается в главном шаблоне сайта и проходит мимо сборщика extraPacker
Это своего рода webpack только встроенный в движок и объединяющий header-ы в компонентах страницы, а так же склеивающий напрямую подключённые на страницах js/css-ки.
ExtraPacker - собирает все подключенные css/less/js-файлы в html-е (кроме тех что перечислены как исключения в core/config/extrapacker.php, а по умолчанию там перечислены файлы созданные webpack-ом)
и пакует их в один файл ссылку на который вставляет в head-раздел.
Так же micron собирает все head-разделы объявленные в компонентах в один, что позволяет писать код в head-раздел прямо из компонента.
Пусть у нас есть такой html-код компонента:
<head>
<link rel="stylesheet" type="text/css" href="/i/css/my_css.css" />
<link rel="stylesheet" type="text/css" href="/i/css/my_less.less" />
<script src="/i/js/my_js.js"></script>
<script type="text/javascript">
call_function_from_my_js();
</script>
</head>
<div>
Html-код компонента.
<button onclick="call_function_from_my_js();">Вызов ф-ии из /i/js/my_js.js</button>
</div>Micron в данном случае:
- скопирует код файла /i/js/my_js.js в общий js-файл (+ минифицирует его)
- скопирует код файла /i/js/my_css.css в общий css-файл (+ минифицирует его)
- преобразует /i/js/my_less.less в css и скопирует полученный css в общий css-файл (+ минифицирует его)
- подключит общие, минифицированные js/css файлы в главном шаблоне
- head-раздел объявленный в компоненте перенесёт head-раздел главного шаблона (чтобы на полученный странице был только один ...)
Путь 1:
- Создайте файл в /middleware/ с нужным middleware
- Подключите его в /core/init/router.php
Путь 2:
- Создайте файл в /core/init/какой-нибудь-файл.php и поместите в него вызываемый код.
Обратите внимание, что данный код в init-файле вызывается на каждый запрос, а это значит что если вам нужно подключить к определённым url-ам, а не ко всем, то:
либо объявите ф-ю и подключите в /core/init/router.php согласно Пути 1
либо определите правило отбора нужных url-ов if-ом прямо в вашем, созданном файле
Вызовите страницу с параметром ?debug_panel=1 и если у вас выставлен DEBUG_MODE=true, то внизу страницы (справа в свёрнутом виде) будет выведена debug-panel сайта в которой можно посмотреть запросы, время исполнения, настройки сайта, подключённые файлы и пр.
Смотрите примеры работы в папках src/examples и tpl/examples (так же можно вызвать через меню)
Находится по адресу /_admin
По умолчанию создаётся учётка admin/admin для входа
Если у вас не получается войти, то проверьте что cookie сохраняются в вашем браузере