Fork me on GitHub

Сервисы

Структура сервисов для нашего приложения показана ниже:

|-- app/
    |-- Services/           # Сервисы
        |-- My/             # Сервисы для работы с XML, HHTP, строками, массивами и другие...
        |-- MyService.php   # Базовый класс для добавления сервисов
        `-- Zf2Service.php  # Класс для добавления `Zend` сервисов

Silex является не только фреймворком, но и сервисным контейнером. Он достигает этого, расширяя Pimple который обеспечивает очень простой сервисный контейнер.

Наше приложение содержит разные виды сервисов:

  • Встроенные сервисы, которые поставляются Silex фреймворком
  • Внешние сервисы, которые вы можете установить самостоятельно например, с помощью Symfony 2 компонентов
  • Пользовательские сервисы, которые вы можете сами добавить в ваше приложение
  • Сервисы Zend Framework 2, это дополнительные возможности известного фреймворка, которые также можно добавить в ваше приложение

Встроенные сервисы

Встроенные сервисы поставляются вместе с Silex фреймворком.

Это такие сервисы как: request, routes, controllers, dispatcher, resolver, kernel, request_context, exception_handler, logger и т.д.

Более подробно можно посмотреть здесь

Внешние сервисы

Внешние сервисы можно установить например, с помощью Symfony 2 компонентов vendor/symfony/symfony/src/Component/. Это делается с помощью Composer. Необходимый набор компонентов нужно указать в файле composer.json. Например, чтобы установить все Symfony 2 компоненты, Monolog, Swiftmailer, Doctrine(DBAL) и Doctrine(ORM) нужно сделать такую запись:

{
    "require": {
        ...
        "symfony/symfony": "^2.7",
        "monolog/monolog": "^1.14",
        "swiftmailer/swiftmailer": "^5.4",
        "doctrine/dbal": "^2.5",
        "doctrine/orm": "^2.5",
        ...
    },
    ...
}

Пользовательские сервисы

Пользовательские сервисы находятся здесь app/Services/My/. Они устанавливаются с помощью класса MyService app/Services/MyService.php

В приложение входят следующие сервисы:

  • Работа с массивами (ArrayBox.php)
  • Работа с XML (CrXml.php)
  • Работа с HTTP (Http.php)
  • Работа с параметрами (ParamBox.php)
  • Работа со строками (String.php)
  • Общие функции (System.php)
  • Работа с разметкой Markdown (app/Services/My/markdown/)

Сервисы Zend Framework 2

Сервисы Zend Framework 2 находятся здесь vendor/zendframework/. Их можно установить с помощью Composer. Необходимый набор компонентов нужно указать в файле composer.json. Например, чтобы установить Zend-Json, Zend-Xml и Zend-Filter нужно сделать такую запись:

{
    "require": {
        ...
        "zendframework/zend-json": "2.*",
        "zendframework/zendxml": "^1.0",
        "zendframework/zend-filter": "2.*"
    },
    ...
}

В наше приложение сервисы Zend Framework 2 устанавливаются с помощью класса Zf2Service app/Services/Zf2Service.php.