PHP YAML Çözümleyiciler [kapalı]

7 Cevap php

Herkes PHP için iyi bir YAML Ayrıştırıcı biliyor mu? Eğer öyleyse, bu kütüphanenin artıları ve eksileri nelerdir?

Update: taze giriş almak için bir lütuf başlayarak. 2010 yılında YAML ayrıştırıcıların durumu nedir? Herhangi yeni gelişmeler?

7 Cevap

Last updated: 17 Ağustos 2012

Burada PHP YAML durumunun bir özeti:

  • Wrappers to C libraries: You'll probably want these if you need sheer speed:
    • php-yaml: Wrapper için LibYAML. Bir PECL uzantısı olarak kullanılabilir; Ayrıca, PHP's docs ile ilgili olanıdır.
    • syck: Binding to syck; also available as a PECL extension. (dated, see below)

  • Saf PHP uygulamaları:

    • sfYaml: Symfony'nin YAML bileşeni. Bunu yazarların motivasyonlarını görebilirsiniz here. O bir şey istedim "easy to use, fast, unit tested and had clear error messages."
    • spyc: Yine başka bir YAML ayrıştırıcı.

Bu yazının anda, son sürümleri yukarıda belirtilen kütüphanelerin ve sürümleri için sürüm tarihleri ​​YAML spec onlar destek şunlardır:

php-yaml   1.1.0     2012-04-15     YAML 1.1
syck       0.9.3     2008-11-18     YAML 1.0
sfYaml     2.1.0     2012-07-09     YAML 1.1, 1.2
spyc       0.5       2011-06-02     YAML 1.1 

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

Saf PHP uygulama, böylece kurulum için sunucuya herhangi bir değişiklik yapmak gerekmez. Hız korkunç endişe ise, bu ideal bir çözüm olmayabilir, ama yapılandırmaları veya nispeten düşük hacimli kullanım için YAML kullanıyorsanız eğer, harika bir çözümdür.

Bir YAML belge önüne alındığında, Spyc size uygun ancak kullanabileceğiniz bir dizi döndürür.

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

Bir dizi göz önüne alındığında, Spyc sizin veri inşa YAML belgeyi içeren bir dize döndürür.

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

symfony framework YAML çok yoğun kullanımını yapar, bu blog post by Grégoire Hubert olmayan bir symfony projesinde kendi YAML kitaplığı kullanarak gösterir.

Symfony2'nin most YAML 1.2 spec destekleyen bir YAML bileşeni vardır

https://github.com/symfony/Yaml

Eğer projede YAML çok kullanıyorsanız eğer spyc veya Symfony YAML gibi saf PHP kitaplıkları yeterince hızlı olmadığını görebilirsiniz. C YAML ayrıştırıcıların için en az iki PHP ciltleri vardır:

  • yaml - LibYAML YAML 1.1 ayrıştırıcı kütüphane için bir sarıcı
  • syck - Syck YAML 1.0 ayrıştırıcı kütüphane için bir sarıcı

Eğer hızlı bir şekilde YAML test etmek gerekirse, ben Yili: http://yaml-online-parser.appspot.com/. Bu beni özellikle sadece öğrenirken, YAML yazmak yardımcı olur.

sfYaml , bilmem iyi deneyin.

Symfony ve Doktrin ORM bu birini kullanıyorsunuz.

Bunu elde etmek için, olabilir Download Doctrine 1.2 ve sfYaml vendor dizinden ayıklayın.

Sizin ihtiyaçlarınıza uygun olmadığını bilelim.