Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

294 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Micron Engine 2

Что это за движок:

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

Что такое 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-раздел главного шаблона (чтобы на полученный странице был только один ...)

Middleware

Путь 1:

  • Создайте файл в /middleware/ с нужным middleware
  • Подключите его в /core/init/router.php

Путь 2:

  • Создайте файл в /core/init/какой-нибудь-файл.php и поместите в него вызываемый код. Обратите внимание, что данный код в init-файле вызывается на каждый запрос, а это значит что если вам нужно подключить к определённым url-ам, а не ко всем, то:
    либо объявите ф-ю и подключите в /core/init/router.php согласно Пути 1
    либо определите правило отбора нужных url-ов if-ом прямо в вашем, созданном файле

Debug-panel

Вызовите страницу с параметром ?debug_panel=1 и если у вас выставлен DEBUG_MODE=true, то внизу страницы (справа в свёрнутом виде) будет выведена debug-panel сайта в которой можно посмотреть запросы, время исполнения, настройки сайта, подключённые файлы и пр.

Примеры

Смотрите примеры работы в папках src/examples и tpl/examples (так же можно вызвать через меню)

Админка

Находится по адресу /_admin
По умолчанию создаётся учётка admin/admin для входа
Если у вас не получается войти, то проверьте что cookie сохраняются в вашем браузере

About

New version of micron engine

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages