Особенности
- Сверх малый размер
- Своя CRUD - админка
- Им пользуюсь только я :)
Изменения в версии 2.0
- Убран генератор моделей и самописная ORM
- Добавлена поддержка автозагрузчика классов через namespace
- Интегрирована ORM Doctrine
- Прямая работа с базой осуществляется через PDO
- Изменена файловая структура (более похожа на фреймворки Symfony и Laravel)
- Некоторые функциональные единицы переписаны с использованием паттернов и добавлением абстракций
- Соблюдены стандарты PSR-0 и PSR-2.
Ближайшие планируемые изменения
- Интеграция Bootstrap 4 в админку
- Введение языковых переменных
- Переписание view-админ с языковыми переменными
- Отдельный класс для работы с PDO
Идеи для нововведений
- Подключить шаблонизатор Twig
- Реализовать генератор моделей для Doctrine
- JWT
Установка
Если бы я сам знал как установить это **вно :) Качай архив. Если опытный веб разработчик быстро сам поймешь.
Работа с LightMVC
Порядок загрузки
Ядро --> Провайдеры --> Маршрутизация --> MVC
Ядро
Точкой входа является файл index.php расположенный в каталоге public.
После инициализации кода ядра LightMVC исполняется код в провайдера, после чего управление передается маршрутизатору и далее контроллеру. Однако LightMVC может прервать свое выполнение и отдать необходимый результат ещё на уровне провайдеров не доходя до системы роутов и контроллеров.
Системные функции
В LightMVC доступные следующие глобальные функции:
| Название | Пояснение | Пример |
|---|---|---|
| dd | Data debug - var_dump кода в читабельной форме | dd($items); // debug некой переменной $items |
| ct | Clear tags - обработка кода от инъекций и других атак | ct($_GET['phone']); // обработка входного GET-параметра |
| getRandomString | GetRandomString - выдача рандомной строки. Имеет целочисленный параметр, который указывает длину строки. Данный параметр является параметром по умолчанию и ровняется 10 |
GetRandomString(5); // генерация строки из 5 символов GetRandomString(); // генерация строки из 10 символов |
| view | View - подключение view - файла |
$content = 'Hello from about page'; return view('frontend.pages.about',compact('content')); |
| redirect | Redirect - перенаправление на указанную страницу | return redirect('/'); |
Провайдеры
Провайдеры - программные компоненты в виде классов, код которых выполняется в начале загрузки пользовательского кода.В провайдеры можно поместить проверку залогиненности пользователя, написания алгоритмов необходимых на многих вывод (сбор/подключение) часто повторящихся однотипных частей
Из встроенных провайдеров пока реализована только авторизация, и та через сессии.
Для создания класса-провайдера необходимо создать PHP-класс в каталоге App/Providers, наследоваться от ProviderInterface
use vendor\lightMVC\ProviderInterface;И Реализовать статический метод make.
public static function make(){
}
Далее необходимо в файле App/Providers/AppServiceProvider подключить данный класс use use vendor\lightMVC\TestProvider; и добавить вызов данного метода в возвращаемый массив метода init.
public static function init(){
return [
// .......
'AuthProvider' => AuthProvider::make(),
'TestProvider' => TestProvider::make(),
// .......
];
}
Маршрутизация
LightMVC поддерживает 2 типа маршрутизации:
Ручная
Ручная маршрутизация задается в файле routes.php, который расположен в корне проекта.
Примеры ручной:
<?php
$url = [
'news' => 'site/News@index',
'news/{alias}' => 'site/News@details',
];
В первой строке - обработка роута news методом index контроллера App\Controller\Site\News
Во второй строке - обработка всех шаблонных маршрутов начинающихся с news методом details контроллера App\Controller\Site\News
Автоматическая
Данный тип роутинга работает на основе $_GET параметров, фреймворк понимает какой метод какого контроллера надо выполнить. Вся админка построена на автоматической маршрутизации.
Для работы с данным тиком маршрутом необходимо указать 3 параметра:
type - admin или site (по сути мы говорим фреймворку в каком модуле мы будем работать)
controller - имя класса контроллера
method - имя метода обработчика.
Примеры:
// index.php <a href="/?type=admin&controller=products&method=create">Добавить товар</a> // create.php <form action="/?type=admin&controller=products&method=store" method="POST"> ... <form>
В первом примере показа как можно делать ссылки. Во втором - куда направлять обработку форм.
Таким образом в модуле сайта использовать автоматическую маршрутизацию. Так главную страницу можно записать следующим образом: /?type=site&controller=site&method=index
Контроллеры
PHP - классы, которые должны хранятся в папке App\Controller\модуль и иметь такое же пространство имен.
Модели
PHP - классы, которые должны хранятся в папке App\Model и иметь такое же пространство имен.
Для работы с моделями используйте ORM Doctrine. Инструкцию по работе с Doctrine можно найти на оф. сайте. Doctrine
Представления
Представления - PHP - файлы для вывода разметки. Распологаются в файле App\View.
Админка
В настоящий момент реализованы следующие компоненты: Категори, Продукты, Новости. В ближайшем будущем будут: Заказы, Страницы, Медиафайлы.
Раздел построен полностью на автоматической маршрутизации.
В админке используются такие сторонние модули как:
- CSS-фрейморк Bootstrap
- JavaScript библиотека jQuery
- jQuery плагин dataTables