lightMVC

Особенности

  • Сверх малый размер
  • Своя CRUD - админка
  • Им пользуюсь только я :)

Изменения в версии 2.0

  1. Убран генератор моделей и самописная ORM
  2. Добавлена поддержка автозагрузчика классов через namespace
  3. Интегрирована ORM Doctrine
  4. Прямая работа с базой осуществляется через PDO
  5. Изменена файловая структура (более похожа на фреймворки Symfony и Laravel)
  6. Некоторые функциональные единицы переписаны с использованием паттернов и добавлением абстракций
  7. Соблюдены стандарты 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