PHP YAML Ayrıştırıcıları [kapalı]


105

PHP için iyi bir YAML Ayrıştırıcısı bilen var mı? Öyleyse, bu kütüphanenin artıları ve eksileri nelerdir?


"spyc" lib'yi deneyin spyc.sourceforge.net
Shreef

16
+1 yapıcı olmasa da, bu sayfa bana son derece yardımcı oldu
Erick Robertson

2
Bu soruya en yüksek oyu alan cevabın niteliği düşünüldüğünde, bu sorunun "yapıcı değil" olarak kapatılmış olması şaşırtıcıdır.
dreftymac

Yaml'ın daha basit bir kuzeni olan BabyYaml ayrıştırıcımı yeni çıkardım, ilgileniyorsanız buradan kontrol edin: github.com/lingtalfi/BabyYaml
ling

ErickRobertson ve dreftymac ile aynı fikirdeyim bu, sorumu tam anlamıyla iyi cevapladı ve soruyu kapatmak daha fazla olası iyi cevapları engellemiştir.
Firavun Araçları

Yanıtlar:


139

Son güncelleme : 26 Temmuz 2017

PHP'deki YAML durumunun bir özeti:

  • Sarmalayıcılardan C kitaplıklarına: Tam hıza ihtiyacınız varsa muhtemelen bunları isteyeceksiniz:
  • Saf PHP uygulamaları:

    • sfYaml : Symfony'nin YAML bileşeni. Yazarlarının motivasyonlarını burada görebilirsiniz . "Kullanımı kolay, hızlı, birim test edilmiş ve açık hata mesajları olan " bir şey istiyordu .
    • spyc : bağımlılıkları olmayan YAML ayrıştırıcısı

Bu yazının yazıldığı sırada, yukarıda belirtilen kitaplıkların ve destekledikleri YAML spesifikasyonunun sürümlerinin (1.2 en son sürüm) en son sürümlerinin yayınlanma tarihleri şunlardır:

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
Orada (gibi diğer daha az bilinen kütüphaneler vardır bu bir Horde projesinden,) ama bu içine çok eski defterleri istemiyordu.
NullUserException

3
Yaklaşık iki yıldır sfYaml kullanıyorum ve bir performans testinde işlem süresinin çoğunu sfYaml :: parse () aldığını fark ettim. Bunu php-yaml ile değiştirdim ve uygulama artık% 70 daha hızlı! Bu çok büyük bir fark.
Attila Fulop

1
PHP için 2019 güncellemesi: "spyc" pek çok sorun yaşarken "sfYaml" sorunsuz çalışıyor.
ViliusL

49

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

Saf PHP uygulaması, bu nedenle kurulum için sunucuda herhangi bir değişiklik yapmanız gerekmez. Hız ciddi bir endişe kaynağıysa, ideal çözüm olmayabilir, ancak yapılandırmalar veya nispeten düşük hacimli kullanım için YAML kullanıyorsanız, harika bir çözümdür.

Bir YAML belgesi verildiğinde, Spyc uygun gördüğünüz şekilde kullanabileceğiniz bir dizi döndürecektir.

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

Bir dizi verildiğinde, Spyc, verilerinizden oluşturulmuş bir YAML belgesi içeren bir dize döndürecektir.

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

1
+1 YAML'yi bir içe aktarma komut dosyasında kullanmanın hızlı ve kolay bir yolunu istedim. Uygulamamın ithalatın (ve muhtemelen bir gün ihracatın) ötesinde herhangi bir desteğe ihtiyacı yok. "Yine başka bir YAML ayrıştırıcısı" olarak listelenen spyc'in tek tıklamayla bir çözüm olduğunu buldum. Bir komut dosyasını komut dosyaları klasörüme bıraktım, ekledim ve bir yöntem çağırdım. Bundan daha kolay olamaz ve şimdi işe geri dönüyorum - barikat kaldırıldı.
Erick Robertson

1
Güncelliğini yitirmiş ve birçok yaml dosyasını yanlış ayrıştırır (bazı veriler kaybolur).
ViliusL



3

Projenizde çok fazla YAML kullanıyorsanız, spyc veya Symfony YAML gibi saf PHP kitaplıklarının yeterince hızlı olmadığını görebilirsiniz. C YAML çözümleyicileri için en az iki PHP bağı vardır:

  • yaml - LibYAML YAML 1.1 ayrıştırıcı kitaplığı için bir sarmalayıcı
  • syck - Syck YAML 1.0 ayrıştırıcı kitaplığı için bir sarmalayıcı


2

SfYaml'ı deneyin , bildiğim en iyisi bu.

Symfony ve Doctrine ORM bunu kullanıyor.

Almak için Doctrine 1.2'yi indiripsfYaml buradan çıkartabilirsiniz .vendor dizine.

İhtiyaçlarınıza uygun olup olmadığını bize bildirin.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.