2008-11-16 14 views
101

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

+0

कोशिश "spyc" lib http://spyc.sourceforge.net/ – Shreef

+10

+1 हालांकि गैर-रचनात्मक, यह पेज अत्यंत इस पर उच्चतम मतदान जवाब की गुणवत्ता पर विचार मुझे –

+0

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

उत्तर

15

symfony framework YAML की बहुत भारी उपयोग करता है में पीछा किया, इस blog post by Grégoire Hubert एक गैर सिम्फोनी परियोजना में उनके YAML लाइब्रेरी का उपयोग को दर्शाता है।

46

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

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

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

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

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

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

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

2

आप अपने प्रोजेक्ट में YAML का एक बहुत उपयोग कर रहे हैं तो आप उस spyc या Symfony YAML की तरह शुद्ध पीएचपी पुस्तकालयों काफी तेजी से नहीं कर रहे हैं मिल सकता है। वहाँ सी YAML पारसर्स के लिए कम से कम दो पीएचपी बाइंडिंग हैं:

  • yaml - Syck YAML 1.0 पार्सर पुस्तकालय
1

कोशिश के लिए एक आवरण - LibYAML YAML 1.1 पार्सर पुस्तकालय

  • syck के लिए एक आवरण sfYaml, यह सबसे अच्छा मुझे पता है।

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

    इसे प्राप्त करने के लिए, आप Download Doctrine 1.2 और vendor निर्देशिका से sfYaml निकाल सकते हैं।

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

  • 2

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

    +0

    अभी इसका उपयोग कर, बहुत अच्छा और इसे ऑनलाइन रखने के लिए धन्यवाद – Aktau

    131

    अंतिम बार अपडेट किया: सी पुस्तकालयों के लिए

    • रैपर: 26 वें जुलाई, 2017

    यहाँ PHP में YAML के राज्य का एक सारांश है आप शायद ही ये चाहता हूँ आपको तेज गति की आवश्यकता है:

    • php-yaml: LibYAML के लिए रैपर। पीईसीएल एक्सटेंशन के रूप में उपलब्ध; यह PHP's docs पर भी एक है।
    • syck: सिंक के लिए बाध्यकारी; एक पीईसीएल विस्तार के रूप में भी उपलब्ध है।

      • sfYaml: Symfony के YAML घटक

    • शुद्ध पीएचपी कार्यान्वयन (दिनांकित, नीचे देखें)। आप अपने लेखकों की प्रेरणा here देख सकते हैं। वह कुछ ऐसा चाहता था जो "उपयोग करने में आसान, तेज़, इकाई परीक्षण और स्पष्ट त्रुटि संदेश था।"

    • spyc: निर्भरता के बिना YAML पार्सर

    इस लेखन के समय, नवीनतम संस्करण ऊपर उल्लिखित पुस्तकालयों के लिए दिनांक और YAML spec के संस्करणों (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

    अन्य कम ज्ञात पुस्तकालय (जैसे [यह एक] (http://pear.horde.org/index.php?package=yaml), हॉर्डे से हैं प्रोजेक्ट), लेकिन मैं इन में ज्यादा जानकारी नहीं लेना चाहता था। – NullUserException

    +7

    अनुसंधान के लिए धन्यवाद! –

    +3

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

    6

    Symfony2 एक YAML घटक है जो YAML 1.2 कल्पना की सबसे का समर्थन करता है है

    https://github.com/symfony/Yaml

    +0

    यह एक अच्छा जवाब है क्योंकि सिम्फनी 2 वाईएएमएल पार्सर पुराना नहीं है। 'sfYaml' उदा। है। – ferdynator

    संबंधित मुद्दे