web-dev-qa-db-fra.com

PHP Analyseurs YAML

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?

105
sgibbons

Dernière mise à jour : 26 juillet 2017

Voici un résumé de l'état de YAML en PHP:

  • Wrappers aux bibliothèques C: vous en aurez probablement besoin si vous avez besoin de vitesse:
    • php-yaml : Wrapper pour LibYAML . Disponible en tant qu'extension PECL; c'est aussi celui sur documentation de PHP .
    • syck : Liaison à syck; également disponible en tant qu'extension PECL. (daté, voir ci-dessous)

  • Pure PHP:

    • sfYaml : composant YAML de Symfony. Vous pouvez voir les motivations de ses auteurs ici . Il voulait quelque chose qui était " facile à utiliser, rapide, testé à l'unité et avait des messages d'erreur clairs."
    • spyc : analyseur YAML sans dépendances

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 
136
NullUserException

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);
48
drowe

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.

15
Dan Powley

Symfony2 possède un composant YAML qui prend en charge la plupart de la spécification YAML 1.2

https://github.com/symfony/Yaml

7
Shane

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:

  • yaml - un wrapper pour la bibliothèque d'analyseur LibYAML YAML 1.1
  • syck - un wrapper pour la bibliothèque d'analyseur Syck YAML 1.0
3
bd808

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.

2
Paul Tarjan

Je suggère le processus suivi dans cet article http://devzone.zend.com/article/2585-using-yaml-with-php-and-pecl

2
preinheimer

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.

2
takeshin