Analyseurs PHP YAML [fermé]

105

Est-ce que quelqu'un connaît un bon analyseur YAML pour PHP? Si oui, quels sont les avantages et les inconvénients de cette bibliothèque?

sgibbons
la source
essayez "spyc" lib spyc.sourceforge.net
Shreef
16
+1 bien que non constructive, cette page m'a été extrêmement utile
Erick Robertson
2
compte tenu de la qualité de la réponse la plus votée sur cette question, il est étonnant que cette question ait été classée comme "non constructive".
dreftymac
Je viens de publier mon analyseur de BabyYaml, qui est un cousin plus simple de Yaml, si vous êtes intéressé, consultez-le ici: github.com/lingtalfi/BabyYaml
ling
Je suis d'accord avec ErickRobertson et dreftymac, cela a littéralement bien répondu à ma question, et sa fermeture a empêché d'autres bonnes réponses possibles.
Pharaoh Tools

Réponses:

139

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 voudrez probablement si vous avez besoin de vitesse pure:
    • php-yaml : Wrapper pour LibYAML . Disponible en tant qu'extension PECL; c'est aussi celui de la documentation PHP .
    • syck : liaison à syck; également disponible en tant qu'extension PECL. (daté, voir ci-dessous)

  • Implémentations PHP pures:

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

Au moment d'écrire ces lignes, les dernières dates de publication des versions pour les bibliothèques susmentionnées et les versions de la 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 
NullUserException
la source
1
Il existe d'autres bibliothèques moins connues (comme celle-ci , du projet Horde), mais je ne voulais pas m'étendre davantage sur celles-ci.
NullUserException
3
J'utilise sfYaml depuis environ deux ans, et lors d'un test de performances, j'ai réalisé que sfYaml :: parse () prenait le plus de temps de traitement. Je l'ai remplacé par php-yaml et l'application est désormais 70% plus rapide! C'est une énorme différence.
Attila Fulop
1
Mise à jour 2019 pour PHP: "spyc" a tellement de problèmes, tandis que "sfYaml" fonctionne bien.
ViliusL
49

Spyc: https://github.com/mustangostang/spyc

Implémentation PHP pure, vous n'avez donc pas besoin d'apporter de modifications au serveur pour l'installation. Si la vitesse est une préoccupation majeure, ce n'est peut-être pas la solution idéale, mais si vous utilisez YAML pour des configurations ou une utilisation à volume relativement faible, c'est une solution fantastique.

Étant donné un document YAML, Spyc renverra un tableau que vous pouvez utiliser comme bon vous semble.

require_once "spyc.php";
$data = Spyc::YAMLLoad($myfile);

Étant donné un tableau, Spyc renverra une chaîne contenant un document YAML construit à partir de vos données.

$yaml_str = Spyc::YAMLDump($myarray);
drowe
la source
1
+1 Je voulais juste un moyen rapide et facile d'utiliser YAML dans un script d'importation. Mon application n'a besoin d'aucun support au-delà des importations (et probablement un jour des exportations). J'ai trouvé que spyc, répertorié comme "encore un autre analyseur YAML" était une solution en 1 clic. J'ai déposé le script dans mon dossier de scripts, je l'ai inclus et j'ai appelé une méthode. Cela ne devient pas plus facile que cela, et maintenant je retourne au travail - barrage routier supprimé.
Erick Robertson
1
Obsolète et beaucoup de fichiers yaml analysés de manière incorrecte (certaines données sont perdues).
ViliusL
7

Symfony2 a un composant YAML qui prend en charge la plupart des spécifications YAML 1.2

https://github.com/symfony/Yaml

Shane
la source
C'est une bonne réponse car l'analyseur Symfony2 YAML n'est pas obsolète. sfYamlpar exemple.
ferdynator
3

Si vous utilisez beaucoup de YAML dans votre projet, vous constaterez peut-être que les bibliothèques PHP pures comme spyc ou Symfony YAML ne sont pas assez rapides. Il existe au moins deux liaisons PHP 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
bd808
la source
2

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 sfYamldu vendorrépertoire.

Faites-nous savoir si cela répond à vos besoins.

prend
la source
2

Si vous avez besoin de tester votre YAML rapidement, j'ai construit: http://yaml-online-parser.appspot.com/ . Cela m'aide à écrire YAML, surtout tout en apprenant.

Paul Tarjan
la source