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
+
:::