Trabalhando com YAML em PHP: biblioteca Symfony Yaml e parsing de dados

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com YAML em PHP: biblioteca Symfony Yaml



YAML (YAML Ain't Markup Language) é um formato de serialização de dados frequentemente usado para arquivos de configuração, descrição de estruturas de dados e troca de informações entre serviços. Em PHP, existem várias soluções para trabalhar com YAML, mas a mais popular e funcional é o componente Symfony Yaml. Ele fornece métodos convenientes para parsing (leitura) e dump (escrita) de dados YAML, suporta todas as especificações YAML 1.2 e está integrado em muitos frameworks, incluindo Laravel e Symfony.



Neste artigo, abordaremos detalhadamente a instalação, operações básicas e recursos avançados da biblioteca Symfony Yaml. Você aprenderá como converter YAML em arrays PHP e vice-versa, além de como lidar com estruturas complexas.



Instalação da biblioteca



O Symfony Yaml é instalado via Composer. Execute o comando na raiz do seu projeto:



composer require symfony/yaml


Após a instalação, inclua o autoloader do Composer e importe as classes necessárias:



require 'vendor/autoload.php';

use Symfony\\Component\\Yaml\\Yaml;use Symfony\\Component\\Yaml\\Exception\\ParseException;


Operações básicas



Parsing de string YAML



O método Yaml::parse() converte uma string YAML em um array PHP. Veja um exemplo com uma configuração simples:



$yamlString = "database:    host: localhost    port: 3306    name: mydb    user: admin    password: secret";

try { $data = Yaml::parse($yamlString); print_r($data);} catch (ParseException $e) { echo 'Erro ao fazer parsing do YAML: ' . $e->getMessage();}


Resultado da execução:



Array(    [database] => Array        (            [host] => localhost            [port] => 3306            [name] => mydb            [user] => admin            [password] => secret        ))


Parsing de arquivo YAML



Na maioria das vezes, o YAML é armazenado em arquivos. Para lê-los, use file_get_contents() junto com o parser:



$yamlFile = __DIR__ . '/config.yaml';if (!file_exists($yamlFile)) {    die('Arquivo de configuração não encontrado');}

try { $config = Yaml::parse(file_get_contents($yamlFile)); echo 'Host do banco de dados: ' . $config['database']['host'];} catch (ParseException $e) { echo 'Erro ao ler o arquivo: ' . $e->getMessage();}


Dump (escrita) em YAML



O método Yaml::dump() converte um array PHP de volta para uma string YAML. Isso é útil para gerar configurações ou exportar dados:



$data = [    'app' => [        'name' => 'MyApp',        'version' => '1.0.0',        'debug' => true,        'modules' => ['auth', 'api', 'admin']    ]];

$yamlOutput = Yaml::dump($data, 3); // Segundo parâmetro — nível de aninhamentofile_put_contents('app_config.yaml', $yamlOutput);echo $yamlOutput;


Resultado no arquivo:



app:    name: MyApp    version: '1.0.0'    debug: true    modules:        - auth        - api        - admin


Recursos avançados



Tratamento de estruturas aninhadas e tipos especiais



O Symfony Yaml suporta aninhamento de qualquer profundidade, bem como tipos especiais de dados, como datas, null e valores booleanos:



$complexYaml = "server:    host: 192.168.1.1    ports:        - 80        - 443        - 8080    settings:        timeout: 30        enabled: true        description: ~        created_at: 2024-01-15";

$parsed = Yaml::parse($complexYaml);var_dump($parsed['server']['settings']['enabled']); // bool(true)var_dump($parsed['server']['settings']['description']); // NULLvar_dump($parsed['server']['settings']['created_at']); // string(10) "2024-01-15"


Flags personalizadas de parsing

\

Recommendations