Работа с YAML в PHP: библиотеки, парсинг и создание файлов

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Работа с YAML в PHP: библиотеки и инструменты

YAML (YAML Ain't Markup Language) — это формат сериализации данных, удобный для чтения человеком. Он часто используется для файлов конфигурации, определения схем данных и обмена информацией между сервисами. В PHP существует несколько способов работы с YAML: от встроенных расширений (при наличии) до мощных сторонних библиотек. В этой статье мы подробно разберём основные инструменты, их установку и практические примеры.

Зачем нужен YAML в PHP?

PHP-разработчики активно используют YAML для:

  • Конфигурационных файлов фреймворков (Symfony, Laravel в некоторых случаях);
  • Описания миграций баз данных;
  • Хранения переводов и локализации;
  • Определения структуры тестовых данных (фикстур);
  • Настройки CI/CD (GitLab CI, Ansible).

Понимание того, как парсить и создавать YAML в PHP, — обязательный навык для современного backend-разработчика.

1. Встроенное расширение yaml (PECL)

Самый производительный способ — использовать расширение yaml, устанавливаемое через PECL. Оно предоставляет две ключевые функции:

  • yaml_parse() — преобразует YAML-строку в массив PHP;
  • yaml_emit() — преобразует массив PHP в YAML-строку.

Установка

pecl install yaml

После установки добавьте в php.ini строку:

extension=yaml.so

Пример использования

<?php
// Парсинг YAML строки
$yamlString = "
database:
  host: localhost
  port: 3306
  name: test_db
";

$config = yaml_parse($yamlString);
echo $config['database']['host']; // localhost

// Создание YAML из массива
$data = [
    'app' => [
        'name' => 'MyApp',
        'version' => '2.0'
    ]
];

$yamlOutput = yaml_emit($data);
echo $yamlOutput;
?>

2. Библиотека Symfony Yaml (рекомендуемый способ)

Если у вас нет возможности устанавливать PECL-расширения (например, на общем хостинге), лучший выбор — библиотека Symfony Yaml. Это часть экосистемы Symfony, но она отлично работает как самостоятельный компонент. Библиотека полностью написана на PHP, не требует внешних зависимостей и поддерживает все возможности YAML 1.1 и 1.2.

Установка через Composer

composer require symfony/yaml

Основные классы

  • Symfony\Component\Yaml\Yaml — статический фасад с методами parse() и dump();
  • Symfony\Component\Yaml\Parser — класс для парсинга с дополнительными опциями;
  • Symfony\Component\Yaml\Dumper — класс для создания YAML с тонкой настройкой форматирования.

Пример парсинга YAML

<?php
require_once 'vendor/autoload.php';

use Symfony\Component\Yaml\Yaml;

$yamlContent = "
server:
  host: 0.0.0.0
  port: 8080
  ssl: true
";

try {
    $array = Yaml::parse($yamlContent);
    print_r($array);
    // Array ( [server] => Array ( [host] => 0.0.0.0 [port] => 8080 [ssl] => 1 ) )
} catch (\Symfony\Component\Yaml\Exception\ParseException $e) {
    echo 'Ошибка парсинга YAML: ' . $e->getMessage();
}
?>

Создание YAML (дамп) из массива

<?php
$config = [
    'application' => [
        'name' => 'PHP App',
        'debug' => true,
        'database' => [
            'driver' => 'mysql',
            'host' => 'localhost',
            'user' => 'root'
        ]
    ]
];

$yaml = Yaml::dump($config, 3, 2);
// Второй аргумент — уровень вложенности (inline), третий — отступы в пробелах
echo $yaml;
?>

Результат выполнения:

application:
  name: 'PHP App'
  debug: true
  database:
    driver: mysql
    host: localhost
    user: root

3. Работа с YAML-файлами

Чаще всего данные хранятся не в строках, а в файлах. Рассмотрим пример чтения и записи конфигурации:

Рекомендаций