Блог

PHP: Что такое Microframework

Раньше существовали “гиганты” которые содержали всё и пытались решать большой спектр задач. Но пришло время когда очень важен объем и попытки использовать только необходимый функционал. Очень популярным в последнее время стали microframework. Многим разработчикам весь функционал framework-а попросту не нужен, зачастую достаточно базового. Получается, что microframework, как следует из названия, это просто базовый функционал, чтобы дать разработчику возможность собрать свой мощный инструмент из многих других доступных инструментов. Мне было интересно, так что я взялся посмотреть, чтобы выяснить для себя, что такое microframework.

Что значит «микро»?

На мой взгля «микро» в фреймворке – относится к простоте и небольшому размеру, так же, это означает, что он не предлагает вам много проектных решений. Термин «микро» не означает, что вся реализация должна вписываться в один файл. Одним из проектных решений в «микро»  является то, что простые задачи должны быть простыми, они не должны занимать много кода, и это не должно ограничивать вас. Когда я впервые знакомился с «микро» то было немного дико и странно видеть, если вы много работали с Zend Framework то может вызвать “неприятное ощущение”. Большинство «микро» фреймворков дает вам возможность проявить вам собственную фантазию в структуре и изменить изначальную базовую настройку. Основная идея «микро» фреймворк – это сохранить ядро простым, но расширяемым. В них нет абстрактного уровня базы данных, нет валидации форм или всего такого, что уже есть в других библиотеках к которым вы можете обращаться. Всегда можно расширить самостоятельно, добавить необходимую функциональность и имплеминтирует их так, как будто они уже были встроены изначально. В настоящее время уже есть расширения: формы валидации, поддержка закачки файлов, различные технологии аутентификации и многие другие.

Одним из таких расширений можно выбрать laravel.com, легко устанавливается и содержит много полезных классов для расширения вашего веб-сайта.

Опыт работы из Slim-Framework

Как и все современные PHP проекты мы начинаем с работы установки и работы с менеджером зависимостей – composer.

Работа с composer

Установка composer в ваш проект:

D:\bin>php -r "readfile('https://getcomposer.org/installer');" | php

Больше узнать про composer можно в официальной документации или здесь.

Все зависимости в composer описаны в файле composer.json. После инициализации необходимо добавить в composer.json в файл который находится в корневом каталоге проекта необходимо добавить дополнительную строку:

{
    "require": {
        "slim/slim": "2.*"
    }
}

Установите с помощью композитора:

php composer.phar install

Добавьте эту строку в файл index.php вашего приложения:

<?php
require 'vendor/autoload.php';

Установка вручную

Скачать вручную можно из официального сайта Slim-Framwork и извлеките в каталог проекта, подключите и инициализируйте в файле index.php вашего приложения. Вы также должны будете зарегистрироваться автопогрузчик. Нам нужно загружаться Silex, чтобы мы могли начать использовать его в нашем проекте.

<?php
require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();

// Создание экземпляра
$app = new \Slim\Slim();
$app->get('/hello/:name', function ($name) {
    echo "Hello, $name";
});
$app->run();

В приведенном выше фрагменте, мы создали экземпляр Slim под названием $app. Теперь мы можем использовать $app, чтобы определить такие вещи, как маршрутов и поставщиков услуг перед вызовом $app->run(), которая будет загружать наше приложение.

Определение маршрутов довольно прост. Для каждого маршрута вам нужно знать метод (например, GET или POST также поддерживаются PUT, DELETE), шаблон URI который вы хотите.

<?php
$loader = require_once '../vendor/autoload.php';

$app = new \Slim\Slim();
// Указываем роуты
$app->get('/', function() {
    echo '<form method="post" action="/">
              Enter your name: <input type="text" name="name" />
              <input type="submit" value="Submit" />
          </form>';
});
$app->post('/', function() use($app) {
    $name = $app->request->post('name', null);
    if($name) {
        printf('Hello! Welcome "%s"!', $name);
        $app->stop();
    }

    return $app->redirect('/');
});

$app->run();

В приведенном выше примере, мы определили два маршрута. Запрос GET возвращает форму, которая затем обрабатывается нашей POST маршрут, когда он будет представлен. Чтобы получить доступ к переданным параметрам, переданных в наш POST обработчик, мы используем $app->request->post(). Чтобы получить экземпляр вашего app можете ссылаться на внешнюю абсолютное имя или получить экземпляр через \Slim\Slim::getInstance().

Надеюсь из этого учебника у вас появилось представление о “микро”-фреймворке и можете, создать небольшой, но мощное приложение, используя Slim или другие подобные framework.

Мой вариант сборки Slim microframework.