Конфигурация
Для конфигурации 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
, где установлены основные параметры вашей конфигурации.