Quelqu'un connaît-il un bon analyseur YAML pour PHP? Si oui, quels sont les avantages et les inconvénients de cette bibliothèque?
Dernière mise à jour : 26 juillet 2017
Voici un résumé de l'état de YAML en PHP:
Pure PHP:
Au moment d'écrire ces lignes, les dates de sortie des dernières versions pour les bibliothèques susmentionnées et les versions des spécification YAML (1.2 est la dernière version) qu'elles prennent en charge sont:
php-yaml 1.3.0 2016-09-24 YAML 1.1 [PHP 5]
php-yaml 2.0.0 2016-09-24 YAML 1.1 [PHP 7]
syck 0.9.3 2008-11-18 YAML 1.0
sfYaml 3.3.5 2017-06-15 YAML 1.1, most of 1.2
spyc 0.6.2 2017-02-24 YAML 1.1
Spyc: https://github.com/mustangostang/spyc
Pure PHP implementation, vous n'avez donc pas besoin d'apporter de modifications au serveur pour l'installation. Si la vitesse est un problème majeur, ce n'est peut-être pas la solution idéale, mais si vous utilisez YAML pour les configurations ou une utilisation relativement faible volume, c'est une solution fantastique.
Étant donné un document YAML, Spyc retournera un tableau que vous pouvez utiliser comme bon vous semble.
require_once "spyc.php";
$data = Spyc::YAMLLoad($myfile);
Étant donné un tableau, Spyc retournera une chaîne qui contient un document YAML construit à partir de vos données.
$yaml_str = Spyc::YAMLDump($myarray);
Le framework symfony fait un usage très intensif de YAML, ceci article de blog de Grégoire Hubert montre comment utiliser leur bibliothèque YAML dans un projet non symfony.
Symfony2 possède un composant YAML qui prend en charge la plupart de la spécification YAML 1.2
Si vous utilisez beaucoup de YAML dans votre projet, vous pouvez constater que les bibliothèques PHP pures comme spyc ou Symfony YAML ne sont pas assez rapides. Il y a au moins deux PHP liaisons pour les analyseurs C YAML:
Si vous avez besoin de tester votre YAML rapidement, j'ai construit: http://yaml-online-parser.appspot.com/ . Cela m'aide à écrire YAML, en particulier tout en apprenant.
Je suggère le processus suivi dans cet article http://devzone.zend.com/article/2585-using-yaml-with-php-and-pecl
Essayez sfYaml, c'est le meilleur que je connaisse.
Symfony et Doctrine ORM utilisent celui-ci.
Pour l'obtenir, vous pouvez Télécharger Doctrine 1.2 et extraire sfYaml
du répertoire vendor
.
Faites-nous savoir si cela convient à vos besoins.