Блог Мазепина Василия

Пишу о том, что кажется интересным

Знакомьтесь, Silex

2015-05-16 11:52 | Комментарии

Доброго времени суток, коллеги и гости…

Я уже упоминал, что работал с таким замечательным фреймворком, как symfony.
Однако, каким бы он не был хорошим, разворачивать его для достаточно мелких проектов порою бывает нерационально.

И возникает вопрос: Как быть, если нужно работать над мелким проектом, но в свою очередь хочется не особо заморачиваться над такими мелкими вещами как раутинг, работа с БД, реализации модели MVC.
Хочется просто и быстро выполнить проект в короткие сроки с удобством разработки. Ну, и как вы уже поняли, речь пойдет о таком фреймворке как Silex.
Silex разработан теми же ребятами, что и разработали symfony2, а это значит, что вещица стоит внимания. По сути Silex - очень упрощенная форма symfony, которая позволяет влёгкую сделать сайт, использование symfony для которого нерационально. Давайте взглянем, что же нам предлагает документация:
Устанавливается Silex через знакомый нам composer :

composer.json
1
2
3
4
5
{
    "require": {
        "silex/silex": "~1.2"
    }
}

И это ВСЁ! Базовый функционал Silex'a теперь будет нам доступен! Фантатика! Теперь давайте взглянем, что нам делать дальше. На главной странице вы увидите вот такой пример разворачивания приложения:

index.php
1
2
3
4
5
6
7
8
require_once __DIR__.'/../vendor/autoload.php';
$app = new Silex\Application();

$app->get('/hello/{name}', function($name) use($app) {
    return 'Hello '.$app->escape($name);
});

$app->run();

Эм, я правильно вас понял? Тут уже перехватываются параметры запроса, и у нас в руках по сути сразу контроллер, который будет работать так же, как это было в symfony! Тут же мы можем в качестве дополнительного параметра взять объект запроса и доставать нужные нам данные!

А что же надо, если нам необходимо взять POST-запрос?

index.php
1
2
3
4
5
6
7
8
9
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

$app->post('/feedback', function (Request $request) {
    $message = $request->get('message');
    mail('feedback@yoursite.com', '[YourSite] Feedback', $message);

    return new Response('Thank you for your feedback!', 201);
});;

Действительно впечатляет. Однако это еще не всё! Если мы любим twig, doctrine ORM или же нам нужны некоторые компоненты symfony, мы можем их подключить!! Смотрите, вот мы подключим twig:

Подключение твига
1
composer require twig/twig

Включаем его в нашем приложении

Подключение твига index.php
1
2
3
$app->register(new Silex\Provider\TwigServiceProvider(), array(
    'twig.path' => __DIR__.'/views',
));

И используем:

Легче легкого! index.php
1
2
3
4
5
$app->get('/hello/{name}', function ($name) use ($app) {
    return $app['twig']->render('hello.twig', array(
        'name' => $name,
    ));
});

Таким же способом мы можем подключить множество компонентов, например:

  • URL Generator (очень удобная вещь)
  • Session (приятная вещь)
  • Validator (Нужная, если вводятся данные)
  • Swiftmailer (Отправка сообщений? - легко)
  • Form (на любителя, в простых приложениях, возможно и не так сильно нужно)
  • Monolog (Логгировать не перелоггировать)
  • Translation (Hello, I’m a doctor)
  • Serializer (Приятная мелочь)
  • Doctrine (Куда же без БД)

В общем, из него можно слепить что угодно, причем быстро и удобно. Документация написана достаточно хорошо, молодцы ребята, все советую! Таким образом, думаю я обратил ваше, мои посетители, внимание на достаточно удобный инструмент для разработки веб-приложений. Творите с удовольствием ! ))

Комментарии