Метод parseFile класса Yaml
Метод parseFile класса Yaml читает
указанный файл и разбирает его содержимое как YAML.
Первым параметром передаётся путь к файлу. Вторым
необязательным параметром можно передать флаг для
кэширования результата разбора. Метод возвращает
PHP-массив или скалярное значение в зависимости
от содержимого файла.
Если файл не существует или содержит синтаксическую
ошибку, метод выбрасывает исключение
ParseException.
Синтаксис
Yaml::parseFile(string $filename, int $flags = 0): mixed
Пример
Давайте создадим YAML-файл с настройками и прочитаем его через метод parseFile:
title: 'article'
count: 5
enabled: true
Теперь прочитаем этот файл в PHP-коде:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Yaml\Yaml;
class ArticleController extends AbstractController
{
public function index(): Response
{
$res = Yaml::parseFile('../config/custom.yaml');
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
{"title":"article","count":5,"enabled":true}
Пример
Давайте прочитаем вложенную структуру и выведем одно из значений:
user:
name: 'abcde'
age: 30
roles:
- 'admin'
- 'user'
Прочитаем файл и получим значение поля name:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Yaml\Yaml;
class UserController extends AbstractController
{
public function index(): Response
{
$res = Yaml::parseFile('../config/user.yaml');
return new Response($res['user']['name']);
}
}
?>
Результат выполнения кода:
abcde
Пример
Давайте передадим второй параметр Yaml::PARSE_OBJECT_FOR_MAP, чтобы получить объект вместо массива:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Yaml\Yaml;
class ConfigController extends AbstractController
{
public function index(): Response
{
$res = Yaml::parseFile('../config/custom.yaml', Yaml::PARSE_OBJECT_FOR_MAP);
return new Response($res->title);
}
}
?>
Результат выполнения кода:
article