Analizadores PHP YAML [cerrado]

105

¿Alguien sabe de un buen analizador YAML para PHP? Si es así, ¿cuáles son los pros y los contras de esta biblioteca?

sgibbons
fuente
intente "spyc" lib spyc.sourceforge.net
Shreef
16
+1 aunque no constructivo, esta página fue extremadamente útil para mí
Erick Robertson
2
teniendo en cuenta la calidad de la respuesta más votada sobre esta pregunta, es sorprendente que esta pregunta se haya cerrado como "no constructiva".
dreftymac
Acabo de publicar mi analizador de BabyYaml, que es un primo más simple de Yaml, si estás interesado, compruébalo aquí: github.com/lingtalfi/BabyYaml
ling
Tengo que estar de acuerdo con ErickRobertson y dreftymac, esto literalmente respondió bien a mi pregunta, y cerrarla ha impedido otras posibles buenas respuestas.
Pharaoh Tools

Respuestas:

139

Última actualización : 26 de julio de 2017

Aquí hay un resumen del estado de YAML en PHP:

  • Envoltorios para bibliotecas C: probablemente los querrá si necesita gran velocidad:
  • Implementaciones de PHP puro:

    • sfYaml : componente YAML de Symfony. Puedes ver las motivaciones de sus autores aquí . Quería algo que fuera " fácil de usar, rápido, probado en la unidad y con mensajes de error claros ".
    • spyc : analizador YAML sin dependencias

En el momento de escribir este artículo, las fechas de lanzamiento de las últimas versiones para las bibliotecas mencionadas anteriormente y las versiones de la especificación YAML (1.2 es la última versión) que admiten son:

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
fuente
1
Hay otras bibliotecas menos conocidas (como esta , del proyecto Horde), pero no quería profundizar mucho en ellas.
NullUserException
3
He estado usando sfYaml durante aproximadamente dos años, y en una prueba de rendimiento me di cuenta de que sfYaml :: parse () aprovechó al máximo el tiempo de procesamiento. Lo reemplacé con php-yaml y la aplicación ahora es un 70% más rápida. Esa es una gran diferencia.
Attila Fulop
1
Actualización de 2019 para PHP: "spyc" tiene muchos problemas, mientras que "sfYaml" funciona bien.
ViliusL
49

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

Implementación pura de PHP, por lo que no es necesario realizar modificaciones en el servidor para la instalación. Si la velocidad es un motivo de grave preocupación, puede que no sea la solución ideal, pero si está utilizando YAML para configuraciones o un uso de volumen relativamente bajo, es una solución fantástica.

Dado un documento YAML, Spyc devolverá una matriz que puede usar como mejor le parezca.

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

Dada una matriz, Spyc devolverá una cadena que contiene un documento YAML creado a partir de sus datos.

$yaml_str = Spyc::YAMLDump($myarray);
drowe
fuente
1
+1 Solo quería una forma rápida y fácil de usar YAML en un script de importación. Mi aplicación no necesita ningún soporte más allá de las importaciones (y probablemente algún día las exportaciones). Encontré que spyc, listado como "otro analizador YAML más", era una solución de 1 clic. Dejé el único script en mi carpeta de scripts, lo incluí y llamé a un método. No hay nada más fácil que eso, y ahora voy a volver al trabajo: se eliminó el obstáculo.
Erick Robertson
1
Muchos archivos yaml obsoletos y analizados incorrectamente (se pierden algunos datos).
ViliusL
7

Symfony2 tiene un componente YAML que admite la mayoría de las especificaciones YAML 1.2

https://github.com/symfony/Yaml

Shane
fuente
Esta es una buena respuesta porque el analizador Symfony2 YAML no está desactualizado. sfYamlpor ejemplo, es.
ferdynator
3

Si está utilizando mucho YAML en su proyecto, puede encontrar que las bibliotecas PHP puras como spyc o Symfony YAML no son lo suficientemente rápidas. Hay al menos dos enlaces PHP para analizadores C YAML:

  • yaml : un contenedor para la biblioteca del analizador LibYAML YAML 1.1
  • syck : un contenedor para la biblioteca del analizador Syck YAML 1.0
bd808
fuente
2

Prueba sfYaml , es lo mejor que conozco.

Symfony y Doctrine ORM están usando este.

Para obtenerlo, puede descargar Doctrine 1.2 y extraerlo sfYamldel vendordirectorio.

Háganos saber si se adapta a sus necesidades.

tomando
fuente