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

Конспект в доработке

    Понимание окружений Symfony

    По умолчанию есть три окружения с возможностью добавить дополнительные: dev, prod и test. Все окружения используют один и тот же код, но имеют разные конфигурации.
    Например, в окружении dev все инструменты отладки включены. Тогда как в окружении prod такого нет, потому что приложение должно быть оптимизировано для повышения производительности.
    Изменяя значение переменной окружения APP_ENV можно переключаться с одного окружения на другое.
    Переменная APP_ENV может быть задана с помощью "настоящих" переменных окружения в терминале:

    export APP_ENV=dev

    Но вместо этого определите их в файле .env


    Источник: https://symfony.com/doc/6.4/the-fast-track/ru/5-debug.html

    Symfony - это на самом деле просто набор маршрутов и сервисов. Файлы в config/packages настраивают эти сервисы.
    Например, где писать файлы журналов или каковы имя и пароль базы данных.
    В среде разработки Symfony использует набор конфигураций, который... хорошо... отлично подходит для разработки: большие ошибки, регистрируйте все и показывайте мне панель инструментов веб-отладки. Среда prod использует набор настроек, оптимизированных для повышения скорости, регистрирует только ошибки и скрывает техническую информацию на страницах ошибок.
    Некоторые пакеты загружаются только в определенных средах. Например, WebServerBundle загружается только в среде разработки
    Symfony Profiler требуется только в процессе разработки, не нужно устанавливать его в продакшен-окружении. Поэтому по умолчанию Symfony автоматически устанавливает его только для окружений dev и test
    src/Kernel.php подгружает файлы из config/* исходя из переменной окружения
    Обычно рекомендуется сохранять переменные среды в файле .env, чтобы другие разработчики могли их видеть и устанавливать для них реальные значения
    Наряду с этими двумя файлами, есть также менее часто используемые .env.test и .env.prod. Они загружаются только в среде test и prod соответственно.

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

    Приложения Symfony настраиваются с помощью файлов, хранящихся в каталоге config/, который по умолчанию имеет следующую структуру:

    your-project/ ├─ config/ │ ├─ packages/ │ ├─ routes/ │ ├─ bundles.php │ ├─ preload.php │ ├─ reference.php │ ├─ routes.yaml │ └─ services.yaml

    Файл routes.yaml определяет конфигурацию маршрутизации;
    Файл services.yaml настраивает сервисы контейнера сервисов;
    Файл bundles.php включает/отключает пакеты в вашем приложении;
    Файл preload.php определяет классы для предварительной загрузки с помощью OPcache;
    Файл reference.php автоматически генерируется Symfony и содержит определения, которые улучшают автодополнение в IDE и статический анализ при использовании PHP в качестве формата конфигурации;
    В каталоге config/packages/ хранится конфигурация каждого пакета, установленного в вашем приложении;
    В каталоге config/routes/ хранится конфигурация маршрутизации, загружаемая установленными пакетами (например, framework.yaml).
    
    Пакеты (в Symfony они называются «бандлами», а в других проектах — «плагинами» или «модулями») добавляют в ваши проекты готовые к использованию функции.
    При использовании Symfony Flex, который по умолчанию включен в приложениях Symfony, пакеты автоматически обновляют файл bundles.php и создают новые файлы в config/packages/ во время установки
    Чтобы узнать обо всех доступных параметрах конфигурации, ознакомьтесь с Справочником по конфигурации Symfony

    Источник: https://symfony.com/doc/current/configuration.html#configuration-files

    ./bin/console config:dump-reference ./bin/console config:dump-reference DebugBundle
    YAML и PHP

    В файлах конфигурации может использоваться два формата YAML или PHP
    При установке пакетов по умолчанию используется YAML, поскольку он лаконичен и очень удобен для чтения, не все IDE поддерживают автодополнение и проверку
    Подробнее о синтаксисе YAML:
    https://symfony.com/doc/current/reference/formats/yaml.html

    Импорт файлов конфигурации

    Symfony загружает файлы конфигурации с помощью компонента Config
    https://symfony.com/doc/current/components/config.html

    config/services.yaml imports: - { resource: 'legacy_config.php' } .... ...

    Иногда одно и то же значение конфигурации используется в нескольких файлах конфигурации. Вместо того чтобы повторять его, вы можете определить его как «параметр» — то есть значение конфигурации, которое можно использовать повторно. По соглашению параметры определяются под ключом parameters:

    # config/services.yaml parameters: # the parameter name is an arbitrary string (the 'app.' prefix is recommended # to better differentiate your parameters from Symfony parameters). app.admin_email: 'something@example.com' ... ..

    После определения вы можете ссылаться на значение этого параметра из любого другого файла конфигурации, используя специальный синтаксис: заключите имя параметра в два % (например, %app.admin_email%):

    config/packages/some_package.yaml some_package: # any string surrounded by two % is replaced by that parameter value email_address: '%app.admin_email%'

    Сама Symfony определяет несколько параметров, в том числе связанные с конфигурацией ядра (например, kernel.project_dir, kernel.debug), а некоторые пакеты при установке добавляют собственные параметры в ваш config/services.yaml


    Источник: https://symfony.com/doc/current/configuration.html#configuration-parameters

    Конфигурационные среды

    При запуске приложения Symfony загружает файлы конфигурации в следующем порядке (последние файлы могут переопределять значения, заданные в предыдущих):
    Файлы в config/packages/*.;
    файлы в config/packages//*.;
    config/services.;
    config/services_..


    Вы также можете задать параметры для разных сред в одном файле конфигурации, используя специальное ключевое слово when:

    # config/packages/webpack_encore.yaml webpack_encore: # ... output_path: '%kernel.project_dir%/public/build' strict_mode: true cache: false # cache is enabled only in the "prod" environment when@prod: webpack_encore: cache: true # disable strict mode only in the "test" environment when@test: webpack_encore: strict_mode: false # YAML syntax allows you to reuse contents using "anchors" (&some_name) and "aliases" (*some_name). # In this example, 'test' configuration uses the exact same configuration as in 'prod' when@prod: &webpack_prod webpack_encore: # ... when@test: *webpack_prod


    Источник: https://symfony.com/doc/current/configuration.html#selecting-the-active-environment

    Выбор активной среды

    В приложениях Symfony есть файл .env в корневом каталоге проекта. Этот файл используется для определения значений переменных среды.
    Например, чтобы запустить приложение в рабочей среде:

    # .env (or .env.local) APP_ENV=prod

    Это значение используется как для веб-страниц, так и для консольных команд. Однако вы можете переопределить его для команд, указав значение APP_ENV перед их выполнением:

    APP_ENV=prod php bin/console command_name
    Создание новой среды

    Источники
    Последнее изменение: 11.05.2026 10:12


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ