2008-11-16 16 views
101

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

+0

probarlo "SPYC" lib http://spyc.sourceforge.net/ – Shreef

+10

1 aunque no constructiva, esta página ha sido extremadamente útil para mí –

+0

teniendo en cuenta la calidad de la respuesta más alta votado en esta pregunta, es sorprendente que esta pregunta se haya cerrado como "no constructiva". – dreftymac

Respuesta

46

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

aplicación PHP puro, por lo que no es necesario realizar ninguna modificación en el servidor para su instalación. Si la velocidad es de gran preocupación, puede que no sea la solución ideal, pero si usa YAML para configuraciones o para 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); 

Dado un vector, Spyc devolverá una cadena que contiene un documento YAML construido a partir de sus datos.

$yaml_str = Spyc::YAMLDump($myarray); 
+1

+1 \t Solo quería una manera 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). Descubrí que spyc, listado como "otro analizador de YAML" era una solución de 1 clic. Solté el único script en mi carpeta de scripts, lo incluí y llamé a un método. No es más fácil que eso, y ahora voy a volver al trabajo: se eliminó la barricada. –

2

Si está utilizando una gran cantidad de YAML en su proyecto es posible que las librerías PHP puros como SPYC o Symfony YAML no son lo suficientemente rápido. Hay por lo menos dos enlaces de PHP para analizadores C YAML:

  • yaml - un contenedor para la biblioteca 1.1 analizador LibYAML YAML
  • syck - un contenedor para la biblioteca 1.0 analizador Syck YAML
1

Try sfYaml, es lo mejor que sé.

Symfony y Doctrine ORM están utilizando este. Para obtenerlo, puede Download Doctrine 1.2 y extraer sfYaml del directorio vendor.

Háganos saber si se adapta a sus necesidades.

2

Si necesita probar su YAML rápidamente, construí: http://yaml-online-parser.appspot.com/. Me ayuda a escribir YAML, especialmente mientras estoy aprendiendo.

+0

Utilizándolo ahora, muy bien y gracias por ponerlo en línea – Aktau

131

Última actualización: 26a de julio de, 2017

He aquí un resumen del estado de YAML en PHP:

  • envolturas a bibliotecas de C: Usted probablemente querrá estos si necesita velocidad absoluta:
    • php-yaml: Contenedor para LibYAML. Disponible como una extensión PECL; también es el de PHP's docs.
    • syck: Enlace a syck; también disponible como una extensión PECL.(Fecha, véase más adelante)

  • implementaciones puro PHP:

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

En el momento de escribir estas líneas, las últimas versiones fechas de lanzamiento para las bibliotecas mencionadas y las versiones de la YAML spec (1.2 es la versión más reciente) que apoyan 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 
+1

Hay otras bibliotecas menos conocidas (como [ésta] (http://pear.horde.org/index.php?package=yaml), de la Horda proyecto), pero no quería profundizar mucho en esto. – NullUserException

+7

¡Gracias por la investigación! –

+3

He estado usando sfYaml durante aproximadamente dos años, y en una prueba de rendimiento me di cuenta de que sfYaml :: parse() tomó la mayor parte del 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. –

6

Symfony2 tiene un componente YAML que soporta más de la especificación YAML 1,2

https://github.com/symfony/Yaml

+0

Esta es una buena respuesta porque el analizador Symfony2 YAML no está desactualizado. 'sfYaml' p. es. – ferdynator