Scriptify.ru

Silex - это микрофреймворк, основанный на компонентах Symphony и других библиотеках. Существует две версии фреймворка: Fat и Slim. Они отличаются лишь количеством подключаемых компонентов. Здесь мы будем рассматривать версию Fat.

Файловая структура Silex

Фреймворк содержит всего две папки: web и vendor.

файловая структура Silex

Файловая структура Silex

Компоненты Silex

В папке vendor содержатся следующие библиотеки:

Сomposer - менеджер зависимостей;

Doctrine - реализует слой ORM, что позволяет писать запросы, не заботясь об особенностях конкретной БД, а также писать запросы на собственном объектно-ориентированном языке.

ircmaxell password_compat - библиотека обеспечивает совместимость с функциями хеширования паролей, начиная с PHP 5.3.7.

Monolog - позволяет создавать логи, которые могут хранится в различных местах, таких как файлы, сокеты, почтовые ящики, базы данных, веб-сервисы

Paragonie random_compat - PHP 5.x полифилл для функций random_bytes() and random_int()

Pimple - инструмент, реализующий паттерн Dependency Injection

psr/log - Общий интерфейс для библиотек логирования

Silex - собственно сам код фреймворка

SwiftMailer - организация рассылки писем

Sympony - содержит множество компонентов, вот некоторые из них:

  • BrowserKit имитирует поведение веб-браузера, позволяет делать запросы, переходы на ссылки, заполнение форм;

  • Config предоставляет несколько классов, которые помогут производить различные операции с конфигурационными файлами;

  • CssSelector конвертирует CSS селекторы в Xpath выражения;

  • DomCrawler облегчает навигацию по DOM

  • EventDispatcher позволяет компонентам взаимодействовать друг с другом путем отправки и прослушивания событий;

  • Finder позволяет искать файлы и папки через интуитивно понятный интерфейс;

  • HttpFoundation обеспечивает объектно-ориентированный слой для некоторых глобальных переменных ($_GET, $_POST, $_FILES, $_COOKIE, $_SESSION, и т. д.);

  • HttpKernel преобразует Request в Response;

  • OptionsResolver - это "array_replace" на стероидах.

  • Intl предоставляет классы и методы для поддержки юникода и интернационализации

  • Routing позволяет получить набор переменных из HTTP-запроса

Файлы проекта

Папка web содержит файлы проекта. На данный момент там находится единственный файл index.php:

// загрузка зависимостей
require_once __DIR__.'/../vendor/autoload.php';
// создание экземпляра приложения
$app = new Silex\Application();

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

$app->run();

Если возникает ошибка Error 404, значит в проекте отсутствует .htaccess. Создадим его вручную

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?$1 [L,QSA]
</IfModule>

Здесь показан пример простого роутинга. Перейдя по адресу site/hello/world, мы получим надпись "Hello World". На этом все!

Содержание статьи