Метод parse класса Yaml
Метод parse класса Yaml принимает строку
в формате YAML и возвращает соответствующее ей
представление в виде массива PHP. Первым параметром
передаётся разбираемая строка. Вторым параметром можно
передать флаги парсера, например Yaml::PARSE_OBJECT
или Yaml::PARSE_DATETIME.
Синтаксис
Yaml::parse(string $yaml, int $flags = 0): mixed
Пример
Давайте разберём простую строку YAML в массив:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Yaml\Yaml;
class YamlController extends AbstractController
{
public function index(): Response
{
$yaml = "name: user\nage: 25\nactive: true";
$res = Yaml::parse($yaml);
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
{"name":"user","age":25,"active":true}
Пример
Давайте разберём YAML с вложенной структурой и списком:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Yaml\Yaml;
class YamlController extends AbstractController
{
public function index(): Response
{
$yaml = "user:\n name: abcde\n roles:\n - admin\n - user";
$res = Yaml::parse($yaml);
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
{"user":{"name":"abcde","roles":["admin","user"]}}
Пример
Давайте передадим флаг Yaml::PARSE_DATETIME,
чтобы дата преобразовалась в объект:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Yaml\Yaml;
class YamlController extends AbstractController
{
public function index(): Response
{
$yaml = "created: 2024-01-01";
$res = Yaml::parse($yaml, Yaml::PARSE_DATETIME);
return new Response(get_class($res['created']));
}
}
?>
Результат выполнения кода:
"DateTime"