Alguém sabe de um bom analisador YAML para PHP? Em caso afirmativo, quais são os prós e os contras desta biblioteca?
Alguém sabe de um bom analisador YAML para PHP? Em caso afirmativo, quais são os prós e os contras desta biblioteca?
Respostas:
Última atualização : 26 de julho de 2017
Aqui está um resumo do estado de YAML em PHP:
Implementações de PHP puro:
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
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);
O framework symfony faz uso intenso de YAML, esta postagem do blog de Grégoire Hubert demonstra o uso de sua biblioteca YAML em um projeto não-symfony.
Symfony2 tem um componente YAML que suporta a maioria das especificações YAML 1.2
sfYamlpor exemplo, é.
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:
Eu sugeriria o processo seguido neste artigo http://devzone.zend.com/article/2585-using-yaml-with-php-and-pecl
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.
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.