Travailler avec YAML en PHP : bibliothèques et outils
YAML (YAML Ain't Markup Language) est un format de sérialisation de données facile à lire pour les humains. Il est souvent utilisé pour les fichiers de configuration, la définition de schémas de données et l'échange d'informations entre services. En PHP, il existe plusieurs façons de travailler avec YAML : des extensions intégrées (si disponibles) aux puissantes bibliothèques tierces. Dans cet article, nous allons détailler les principaux outils, leur installation et des exemples pratiques.
Pourquoi utiliser YAML en PHP ?
Les développeurs PHP utilisent activement YAML pour :
- Les fichiers de configuration des frameworks (Symfony, Laravel dans certains cas) ;
- La description des migrations de bases de données ;
- Le stockage des traductions et de la localisation ;
- La définition de la structure des données de test (fixtures) ;
- La configuration CI/CD (GitLab CI, Ansible).
Comprendre comment analyser et créer du YAML en PHP est une compétence essentielle pour tout développeur backend moderne.
1. Extension intégrée yaml (PECL)
La méthode la plus performante consiste à utiliser l'extension yaml, installée via PECL. Elle fournit deux fonctions clés :
yaml_parse()— convertit une chaîne YAML en tableau PHP ;yaml_emit()— convertit un tableau PHP en chaîne YAML.
Installation
pecl install yamlAprès l'installation, ajoutez la ligne suivante dans php.ini :
extension=yaml.soExemple d'utilisation
<?php// Analyse d'une chaîne YAML$yamlString = "database: host: localhost port: 3306 name: test_db";
$config = yaml_parse($yamlString);echo $config['database']['host']; // localhost
// Création de YAML à partir d'un tableau$data = [ 'app' => [ 'name' => 'MyApp', 'version' => '2.0' ]];
$yamlOutput = yaml_emit($data);echo $yamlOutput;?>2. Bibliothèque Symfony Yaml (méthode recommandée)
Si vous ne pouvez pas installer d'extensions PECL (par exemple sur un hébergement mutualisé), le meilleur choix est la bibliothèque Symfony Yaml. Elle fait partie de l'écosystème Symfony, mais fonctionne parfaitement comme composant autonome. La bibliothèque est entièrement écrite en PHP, ne nécessite aucune dépendance externe et prend en charge toutes les fonctionnalités de YAML 1.1 et 1.2.
Installation via Composer
composer require symfony/yamlClasses principales
Symfony\\Component\\Yaml\\Yaml— façade statique avec les méthodesparse()etdump();Symfony\\Component\\Yaml\\Parser— classe pour l'analyse avec des options supplémentaires ;Symfony\\Component\\Yaml\\Dumper— classe pour la création de YAML avec un réglage fin du formatage.
Exemple d'analyse YAML
<?phprequire_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 'Erreur d\'analyse YAML : ' . $e->getMessage();}?>Création de YAML (dump) à partir d'un tableau
<?php$config = [ 'application' => [ 'name' => 'PHP App', 'debug' => true, 'database' => [ 'driver' => 'mysql', 'host' => 'localhost', 'user' => 'root' ] ]];
$yaml = Yaml::dump($config, 3, 2);// Deuxième argument — niveau d'imbrication (inline), troisième — indentation en espacesecho $yaml;?>Résultat de l'exécution :
application: name: 'PHP App' debug: true database: driver: mysql