Конфігурація та середовища

← Конфігурація та середовища

Ashterix

docs(articles): From Magento to Symfony, a requalification guide grouped into sections

uk/articles/magento-to-symfony/core/config.md новий файл +40 −0

1 + # Конфігурація та середовища
2 +
3 + Конфігурація ділиться на два рівні. Конфіг бандлів (`config/packages/*.yaml`) описує, як налаштований фреймворк, і читається під час компіляції контейнера. Змінні середовища (`%env(...)%`) зберігають те, що відрізняється між серверами, і читаються в runtime.
4 +
5 + **Magento** · значення з адмінки
6 +
7 + ```php
8 + $enabled = $this->scopeConfig->isSetFlag(
9 + 'faq/general/enabled',
10 + ScopeInterface::SCOPE_STORE
11 + );
12 + ```
13 +
14 + **Symfony** · значення з оточення
15 +
16 + ```dotenv
17 + # .env
18 + FAQ_ENABLED=1
19 + ```
20 + ```php
21 + final class FaqMenu
22 + {
23 + public function __construct(
24 + #[Autowire(env: 'bool:FAQ_ENABLED')]
25 + private bool $enabled,
26 + ) {}
27 + }
28 + ```
29 +
30 + - **Порядок файлів:** `.env` → `.env.local` → `.env.$APP_ENV` → `.env.$APP_ENV.local`. Справжні змінні середовища перемагають усі файли. `.env` комітять, `*.local` — ні.
31 + - **Процесори:** `%env(int:X)%`, `bool:`, `json:`, `resolve:`, `default:fallback_param:X`.
32 + - **Секрети:** `bin/console secrets:set ERP_TOKEN` шифрує значення в репозиторії, ключ розшифрування живе лише на сервері.
33 + - **Середовища:** блок `when@prod:` у будь-якому YAML або атрибут `#[When(env: 'dev')]` на класі.
34 + - **Prod:** `composer dump-env prod` збирає `.env.local.php`, щоб не парсити файли на кожен запит.
35 + - **Довідка:** `debug:config framework` показує фактичні значення, `config:dump-reference doctrine` — усі можливі опції.
36 +
37 + :::warning subtitle="Налаштувань з адмінки немає"
38 + Якщо бізнесу потрібні налаштування, які людина змінює в браузері, це звичайна сутність, таблиця, форма і кеш, які ви пишете самі. Скоупів store/website теж немає: мультимагазин або мультитенантність проєктують окремо.
39 +
40 + :::