Конвертер YAML ↔ JSON
Перетворює YAML у JSON і назад, зберігаючи порядок ключів і типи значень.
Показує, що насправді прочитає парсер із вашого YAML
YAML читається легко, але парситься з сюрпризами: значення без лапок стають числами, булевими чи null, відступ у два пробіли замість чотирьох ламає вкладеність. Конвертер показує, як ваш YAML виглядає після розбору, і збирає YAML із JSON, коли треба зробити конфіг із відповіді API.
symfony/yaml розбирає YAML у масиви PHP і назад: Yaml::parse і Yaml::dump. Другий аргумент dump задає, з якого рівня вкладеності структури згортаються в один рядок, третій розмір відступу. Для docker-compose і CI-конфігів звичний inline-рівень 4 і відступ 2.
use Symfony\Component\Yaml\Yaml;
$config = Yaml::parse(file_get_contents('config.yaml'));
// ['database' => ['host' => '127.0.0.1', 'port' => 5432]]
echo Yaml::dump($config, inline: 4, indent: 2);
// database:
// host: 127.0.0.1
// port: 5432
Що питають про цей інструмент
Старий YAML 1.1 вважає yes, no, on, off булевими, і саме так їх читають більшість парсерів, включно з symfony/yaml. Норвезька проблема: код країни NO перетворюється на false. Беріть такі значення в лапки, і вони лишаться рядками.
Без лапок 007 це число (а у YAML 1.1 ще й вісімкове). Номери телефонів, поштові індекси, версії на кшталт 1.10 завжди пишіть у лапках, інакше парсер зробить із них числа й обріже нулі.
symfony/yaml: вона стоїть у Symfony з коробки, а в Laravel ставиться однією командою. Розширення ext-yaml швидше, але не скрізь є. Для конфігів різниця в швидкості не важлива, для тисяч файлів уже так.