Fork me on GitHub

Конфигурация

Для конфигурации Silex-MVC есть несколько вещей, которые нужно учитывать.

Первое, Silex-MVC состоит из двух независимых приложений. Это Веб приложение и Консольное приложение. Эти приложения конфигурируются по разному, хотя у них есть общие файлы конфигурации.

Второе, Веб приложение может конфигурироваться двумя способами с помощью yml файлов или задавать конфигурацию в коде программы. Выбор между способом конфигурации осуществляется в методе _iniConfig в классе Bootstrap /app/Bootstrap.php.

Конфигурация в коде программы происходит быстрее.


Файлы конфигурации

Файлы конфигурации показаны ниже.

|-- app/
    |-- Resources/              # Ресурсы
        |-- Config/             # Файлы конфигурации
            |-- Config.php      # `Config` класс
            |-- application.yml # Конфигурация для веб приложения
            |-- config.yml      # Общая конфигурация используется как 
                                # веб приложением так и консольным приложением
            |-- console.yml     # Конфигурация для консольного приложения
            |-- parameters.yml  # Основные параметры конфигурации
            |-- security.yml    # Конфигурация аутентификации и авторизации пользователя

Если вы используете в ваших yml файлах конфигурации выражение imports, то ваш конфиг будет рекурсивно объединен с конфигом указанным в выражении imports.

Config.php

Это Config класс - сервис с помощью которого можно получить основные параметры конфигурации через $app['config']['parameters'], можно также получить пути к основным рабочим директориям например к лог файлам, кеш файлам и другим. А также с помощью этого сервиса можно создать необходимые директории при первом открытии приложения.

parameters.yml

Здесь устанавливаются значения основных параметров вашей конфигурации, которые могут использоваться в других ваших конфигурациях. Значения параметров можно получить через $app['config']['parameters'].

Значения основных параметров:

  • Временная зона (timezone)
  • Язык локализации (locale)
  • Цветовая схема сайта (scheme)
  • Режим отладки (debug)
  • Окружающая среда (environment)
  • Директория хранения данных для консольного приложения (data_dir)
  • Адрес хоста для локального тестирования (url_test)
  • UBKI параметры (ubki_login, ubki_pass, ubki_test_login, ubki_test_pass)
  • Параметры базы данных (db.driver, db.path, db.name, db.models.path, db.models.namespace, db.connection.production, db.connection.development, db.connection.test)
  • Email параметры (mail.host, mail.port, mail.username, mail.password)
  • PagerFanta параметры (pagerfanta.max_per_page, pagerfanta.proximity)

config.yml

Общая конфигурация используется как веб приложением так и консольным приложением. Разместите данные о ваших общих сервисах в секции service_providers.

 service_providers:
    ...
    swiftmailer:
        class: Silex\Provider\SwiftmailerServiceProvider
        parameters:
            swiftmailer.options:
                host: %mail.host%
                port: %mail.port%
                username: %mail.username%
                password: %mail.password%
                encryption: %mail.encryption%
                auth_mode: %mail.auth_mode%
...

console.yml или application.yml

Конфигурации соответственно применяются для консольного или веб приложений.

security.yml

Здесь устанавливаются значения способа аутентификации пользователя и его авторизации. С подробностями можно познакомиться здесь.

env.yml

Часто необходимо иметь разные значения для разных настроек в зависимости от среды, в которой выполняется приложение. Например, вы можете захотеть использовать разные драйвера кэша на локальном и производственном (продакшн) серверах. Это легко достигается использованием настроек, зависящих от среды.

Для решения этой задачи можно создать файл env.yml с вашими специфическими настройками и разместить его в корне вашего приложения. Этот файл будет замещать файл parameters.yml, где установлены основные параметры вашей конфигурации.