PHP YAML पार्सर्स [बंद]


105

क्या किसी को PHP के लिए एक अच्छा YAML पार्सर का पता है? यदि हां, तो इस पुस्तकालय के पेशेवरों और विपक्ष क्या हैं?


"स्पाईक" की कोशिश करें spyc.sourceforge.net
श्रीफ़ नोव

16
+1 हालांकि गैर-रचनात्मक, यह पृष्ठ मेरे लिए बहुत उपयोगी था
एरिक रॉबर्टसन

2
इस सवाल पर सबसे ज्यादा वोट देने वाले जवाब की गुणवत्ता को देखते हुए, यह आश्चर्यजनक है कि यह प्रश्न "रचनात्मक नहीं" के रूप में बंद हो गया था।
dreftymac

मैंने अभी-अभी बेबीयामल का अपना पार्सर जारी किया है, जो यमल का एक सरल चचेरा भाई है, अगर आप इसे यहाँ देखना चाहते हैं: github.com/lingtalfi/BabyYaml
ling

मुझे ErickRobertson से सहमत होना है और dreftymac ने इसका शाब्दिक रूप से मेरे प्रश्न का अच्छी तरह से उत्तर दिया, और इसे बंद करने से और भी अच्छे उत्तर मिल सके।
फिरौन उपकरण 19

जवाबों:


139

अंतिम अपडेट : 26 जुलाई, 2017

यहाँ PHP में YAML की स्थिति का सारांश दिया गया है:

  • C लाइब्रेरियों के लिए रैपर: यदि आप सरासर गति चाहते हैं तो आप शायद ये चाहते हैं:
    • php-yaml : लिबरामल के लिए आवरण । PECL एक्सटेंशन के रूप में उपलब्ध है; यह PHP के डॉक्स पर भी एक है ।
    • syck : बाइंडिंग to syck; PECL एक्सटेंशन के रूप में भी उपलब्ध है। (दिनांक, नीचे देखें)

  • शुद्ध PHP कार्यान्वयन:

    • sfYaml : Symfony का YAML घटक। आप इसके लेखकों की प्रेरणाओं को यहाँ देख सकते हैं । वह कुछ ऐसा चाहता था जो " उपयोग में आसान, तेज, यूनिट परीक्षण और स्पष्ट त्रुटि संदेश था ।"
    • स्पाइक : निर्भरता के बिना YAML पार्सर

इस लेखन के समय, नवीनतम संस्करण पूर्वोक्त पुस्तकालयों के लिए दिनांक जारी करते हैं और YAML युक्ति के संस्करण (1.2 नवीनतम संस्करण है) जिसका वे समर्थन करते हैं:

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
अन्य कम ज्ञात पुस्तकालय हैं (जैसे यह एक , होर्डे प्रोजेक्ट से), लेकिन मैं इनमें बहुत ज्यादा नहीं डालना चाहता था।
NullUserException

3
मैं लगभग दो वर्षों से sfYaml का उपयोग कर रहा हूं, और एक प्रदर्शन परीक्षण पर मैंने महसूस किया कि sfYaml :: parse () ने प्रसंस्करण समय का सबसे अधिक लिया। मैंने इसे php-yaml से बदल दिया और एप्लिकेशन अब 70% तेज है! यह बहुत बड़ा अंतर है।
अटिला फुलॉप

1
PHP के लिए 2019 अपडेट: "स्पाईक" में बहुत सारी समस्याएं हैं, जबकि "sfYaml" ठीक काम करता है।
विलिअसएल

49

स्पाईक: https://github.com/mustangostang/spyc

शुद्ध PHP कार्यान्वयन, इसलिए आपको स्थापना के लिए सर्वर में कोई संशोधन करने की आवश्यकता नहीं है। यदि गति बहुत चिंताजनक है, तो यह आदर्श समाधान नहीं हो सकता है, लेकिन यदि आप कॉन्फ़िगरेशन या अपेक्षाकृत कम मात्रा के उपयोग के लिए YAML का उपयोग कर रहे हैं, तो यह एक शानदार समाधान है।

एक YAML दस्तावेज़ को देखते हुए, Spyc एक सरणी लौटाएगा जिसका उपयोग आप उपयोग कर सकते हैं हालांकि आप फिट दिखते हैं।

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

एक सरणी को देखते हुए, Spyc एक स्ट्रिंग लौटाएगा जिसमें आपके डेटा से निर्मित एक YAML दस्तावेज़ होगा।

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

1
+1 मुझे आयात स्क्रिप्ट में YAML का उपयोग करने का एक त्वरित और आसान तरीका चाहिए था। मेरे आवेदन को आयात (और शायद किसी दिन निर्यात) से परे किसी भी समर्थन की आवश्यकता नहीं है। मैंने पाया कि स्पाईक, "अभी तक एक और YAML पार्सर" के रूप में सूचीबद्ध 1-क्लिक समाधान था। मैंने अपने स्क्रिप्ट फ़ोल्डर में एक स्क्रिप्ट को छोड़ दिया, इसे शामिल किया, और एक विधि को बुलाया। यह उससे आसान नहीं है, और अब मैं काम पर वापस जा रहा हूं - सड़क को हटा दिया गया।
एरिक रॉबर्टसन

1
आउटडेटेड और बहुत सारी पार्स यम फाइलें गलत तरीके से (कुछ डेटा खो जाती हैं)।
विलिअसएल


7

Symfony2 में एक YAML घटक है जो YAML 1.2 युक्ति के अधिकांश का समर्थन करता है

https://github.com/symfony/Yaml


यह एक अच्छा जवाब है क्योंकि Symfony2 YAML पार्सर पुराना नहीं है। sfYamlजैसे है।
20

3

यदि आप अपने प्रोजेक्ट में बहुत सारे YAML का उपयोग कर रहे हैं, तो आप पा सकते हैं कि शुद्ध PHP लाइब्रेरी जैसे कि स्पाईक या सिम्फनी YAML बहुत तेज़ नहीं हैं। C YAML पार्सर्स के लिए कम से कम दो PHP बाइंडिंग हैं:

  • yaml - LibYAML YAML 1.1 पार्सर लाइब्रेरी के लिए एक आवरण
  • syck - Syck YAML 1.0 पार्सर लाइब्रेरी के लिए एक आवरण


2

SfYaml की कोशिश करो , यह सबसे अच्छा मुझे पता है।

सिम्फनी और डॉक्ट्रिन ओआरएम इसका उपयोग कर रहे हैं।

इसे पाने के लिए, आप डॉक्ट्रिन 1.2 डाउनलोड कर सकते हैं और डायरेक्टरी sfYamlसे निकाल सकते हैं vendor

आपको बता दें कि यह आपकी आवश्यकताओं के अनुरूप है।


2

यदि आपको अपना YAML जल्दी से परीक्षण करने की आवश्यकता है, तो मैंने बनाया: http://yaml-online-parser.appspot.com/ । यह मुझे YAML लिखने में मदद करता है, विशेष रूप से सिर्फ सीखने के दौरान।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.