Analisadores PHP YAML [fechado]

105

Alguém sabe de um bom analisador YAML para PHP? Em caso afirmativo, quais são os prós e os contras desta biblioteca?

sgibbons
fonte
tente "spyc" lib spyc.sourceforge.net
Shreef
16
+1 embora não construtiva, esta página foi extremamente útil para mim
Erick Robertson
2
considerando a qualidade da resposta mais votada a esta questão, é surpreendente que esta questão tenha sido encerrada como "não construtiva".
dreftymac
Acabei de lançar meu analisador de BabyYaml, que é um primo mais simples de Yaml, se você estiver interessado, verifique aqui: github.com/lingtalfi/BabyYaml
ling
Tenho que concordar com ErickRobertson e dreftymac que literalmente respondeu bem à minha pergunta, e fechá-lo impediu outras possíveis boas respostas.
Pharaoh Tools

Respostas:

139

Última atualização : 26 de julho de 2017

Aqui está um resumo do estado de YAML em PHP:

  • Wrappers para bibliotecas C: você provavelmente vai querer estes se precisar de velocidade absoluta:
    • php-yaml : Wrapper para LibYAML . Disponível como extensão PECL; é também aquele nos documentos do PHP .
    • syck : Ligação ao syck; também disponível como extensão PECL. (datado, veja abaixo)

  • Implementações de PHP puro:

    • sfYaml : componente YAML do Symfony. Você pode ver as motivações de seus autores aqui . Ele queria algo que fosse " fácil de usar, rápido, testado na unidade e tivesse mensagens de erro claras ".
    • spyc : analisador YAML sem dependências

No momento em que este artigo foi escrito, as datas de lançamento das versões mais recentes para as bibliotecas mencionadas e as versões da especificação YAML (1.2 é a versão mais recente) com suporte eram:

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
fonte
1
Existem outras bibliotecas menos conhecidas (como esta , do projeto Horde), mas eu não queria me aprofundar muito nelas.
NullUserException
3
Estou usando o sfYaml há cerca de dois anos e, em um teste de desempenho, percebi que sfYaml :: parse () tomava a maior parte do tempo de processamento. Substituí-o pelo php-yaml e o aplicativo agora é 70% mais rápido! Essa é uma grande diferença.
Attila Fulop
1
Atualização de 2019 para PHP: "spyc" tem tantos problemas, enquanto "sfYaml" funciona bem.
ViliusL
49

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

Implementação de PHP pura, portanto, você não precisa fazer nenhuma modificação no servidor para instalação. Se a velocidade é uma preocupação extrema, pode não ser a solução ideal, mas se você estiver usando YAML para configurações ou uso de volume relativamente baixo, é uma solução fantástica.

Dado um documento YAML, o Spyc retornará um array que você pode usar como quiser.

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

Dado um array, Spyc retornará uma string que contém um documento YAML construído a partir de seus dados.

$yaml_str = Spyc::YAMLDump($myarray);
drowe
fonte
1
+1 Eu só queria uma maneira rápida e fácil de usar YAML em um script de importação. Meu aplicativo não precisa de nenhum suporte além de importações (e provavelmente algum dia as exportações). Descobri que o spyc, listado como "mais um analisador YAML", era uma solução com um clique. Eu coloquei o único script na minha pasta de scripts, incluí-o e chamei um método. Não existe nada mais fácil do que isso, e agora estou voltando ao trabalho - obstáculo removido.
Erick Robertson
1
Desatualizados e muitos arquivos yaml de análise incorreta (alguns dados são perdidos).
ViliusL
7

Symfony2 tem um componente YAML que suporta a maioria das especificações YAML 1.2

https://github.com/symfony/Yaml

Shane
fonte
Esta é uma boa resposta porque o analisador YAML do Symfony2 não está desatualizado. sfYamlpor exemplo, é.
ferdynator 01 de
3

Se você estiver usando muito YAML em seu projeto, poderá descobrir que as bibliotecas PHP puras como spyc ou Symfony YAML não são rápidas o suficiente. Existem pelo menos duas ligações PHP para analisadores C YAML:

  • yaml - um wrapper para a biblioteca do analisador LibYAML YAML 1.1
  • syck - um wrapper para a biblioteca do analisador Syck YAML 1.0
bd808
fonte
2

Experimente o sfYaml , é o melhor que conheço.

Symfony e Doctrine ORM estão usando este.

Para obtê-lo, você pode baixar Doctrine 1.2 e extrair sfYamldo vendordiretório.

Deixe-nos saber se ele atende às suas necessidades.

Takehin
fonte
2

Se você precisa testar seu YAML rapidamente, eu construí: http://yaml-online-parser.appspot.com/ . Isso me ajuda a escrever YAML, especialmente enquanto estou aprendendo.

Paul Tarjan
fonte