it-swarm.com.de

PHP YAML-Parser

Kennt jemand einen guten YAML-Parser für PHP? Wenn ja, welche Vor- und Nachteile hat diese Bibliothek?

105
sgibbons

Letzte Aktualisierung : 26. Juli 2017

Hier ist eine Zusammenfassung des Status von YAML in PHP:

  • Wrapper für C-Bibliotheken: Diese werden Sie wahrscheinlich brauchen, wenn Sie bloße Geschwindigkeit benötigen:
    • php-yaml : Wrapper für LibYAML . Verfügbar als PECL-Erweiterung; es ist auch das auf PHP's docs .
    • syck : Bindung an syck; auch als PECL-Erweiterung erhältlich. (datiert, siehe unten)

  • Reine PHP Implementierungen:

    • sfYaml : Die YAML-Komponente von Symfony. Sie können die Motivationen der Autoren sehen hier . Er wollte etwas, das " einfach zu bedienen, schnell, Unit-getestet und hatte klare Fehlermeldungen."
    • spyc : YAML-Parser ohne Abhängigkeiten

Zum Zeitpunkt des Schreibens dieses Dokuments sind die Veröffentlichungsdaten der neuesten Versionen für die oben genannten Bibliotheken und die von ihnen unterstützten Versionen der YAML-Spezifikation (1.2 ist die neueste Version):

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

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

Reine PHP Implementierung, sodass Sie für die Installation keine Änderungen am Server vornehmen müssen. Wenn es um die Geschwindigkeit geht, ist dies möglicherweise nicht die ideale Lösung, aber wenn Sie sie verwenden YAML für Konfigurationen oder die Verwendung mit relativ geringem Volumen ist eine fantastische Lösung.

Bei einem YAML-Dokument gibt Spyc ein Array zurück, das Sie nach Belieben verwenden können.

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

Bei einem gegebenen Array gibt Spyc eine Zeichenfolge zurück, die ein aus Ihren Daten erstelltes YAML-Dokument enthält.

$yaml_str = Spyc::YAMLDump($myarray);
48
drowe

Das Symfony-Framework nutzt YAML sehr intensiv. In diesem Blog-Beitrag von Grégoire Hubert wird die Verwendung der YAML-Bibliothek in einem Nicht-Symfony-Projekt demonstriert.

15
Dan Powley

Symfony2 hat eine YAML-Komponente, die most der YAML 1.2-Spezifikation unterstützt

https://github.com/symfony/Yaml

7
Shane

Wenn Sie viel YAML in Ihrem Projekt verwenden, stellen Sie möglicherweise fest, dass die reinen PHP - Bibliotheken wie spyc oder Symfony YAML nicht schnell genug sind. Es gibt mindestens zwei PHP Bindungen für C-YAML-Parser:

  • yaml - Ein Wrapper für die LibYAML YAML 1.1-Parser-Bibliothek
  • syck - Ein Wrapper für die Parser-Bibliothek von Syck YAML 1.0
3
bd808

Wenn Sie Ihre YAML schnell testen müssen, habe ich Folgendes erstellt: http://yaml-online-parser.appspot.com/ . Es hilft mir, YAML zu schreiben, besonders beim Lernen.

2
Paul Tarjan

Ich würde den in diesem Artikel beschriebenen Prozess vorschlagen http://devzone.zend.com/article/2585-using-yaml-with-php-and-pecl

2
preinheimer

Versuchen Sie sfYaml, es ist das Beste, was ich kenne.

Symfony und Doctrine ORM verwenden diesen.

Um es zu bekommen, können Sie Download Doctrine 1.2 und extrahieren sfYaml aus vendor Verzeichnis.

Lassen Sie uns wissen, ob es Ihren Bedürfnissen entspricht.

2
takeshin