2009-08-07 13 views
10

मुझे एक अच्छा कॉन्फ़िगरेशन फ़ाइल प्रारूप चाहिए। मैं टेबल स्कीमा डालने की योजना बना रहा हूं। सिम्फनी की तरह, रेल पर रूबी इत्यादि। कॉन्फ़िगरेशन फ़ाइल के लिए सबसे अच्छा फ़ाइल प्रारूप क्या है? यामएल या एक्सएमएल या JSON एन्कोडेड फ़ाइल? इस उद्देश्य के लिए सबसे अच्छा कौन सा है?कॉन्फ़िगरेशन फ़ाइल के लिए सबसे अच्छा फ़ाइल प्रारूप क्या है?

+0

तुम्हें पता है कि अगर आप अधिक प्रश्न स्वीकार करते हैं, आप और अधिक प्रतिनिधि, है ना? –

उत्तर

13

जैसा कि अन्य ने कहा है, आपके पास बहुत सारे विकल्प हैं। बस आविष्कार न करें (यानी पार्सर्स लिखें) ऐसी चीज स्वयं जब तक कि आपके पास वास्तव में ऐसा करने का वास्तव में अच्छा कारण नहीं है (किसी के बारे में नहीं सोच सकता)।बस अपने विकल्पों का मूल्यांकन:

  • आप इस डेटा (किसी अन्य भाषा के साथ) अपने आवेदन के बाहर कहीं भी उपयोग करने के लिए
  • आप चाहते हैं की जरूरत है उन (या अपने आप को) एक सरल पाठ संपादक का उपयोग फ़ाइल को संपादित करने में सक्षम हो
  • आप पीछे की ओर भाषा का इस्तेमाल

उदाहरण के लिए के पुराने संस्करणों के साथ संगतता की आवश्यकता है, पीएचपी बहुत आसान serialize() और unserialize() फ़ंक्शन देता है। प्रारूप, हालांकि, मनुष्यों द्वारा आसानी से पठनीय/संपादन योग्य नहीं है (एक्सएमएल भी पढ़ना मुश्किल हो सकता है, लेकिन PHP प्रारूप जितना कठिन नहीं है। पायथन का अचार मॉड्यूल भी बदतर है।)। यदि आपको कभी भी अन्य भाषाओं के साथ डेटा तक पहुंचने की आवश्यकता है, तो यह एक खराब विकल्प है। और दूसरों के बारे में सोचें - मैंने हाल ही में एक पाइथन परियोजना में होर्ड परियोजना से PHP क्रमबद्ध डेटा को पार्स करने के लिए टोपी बनाई है! जेएसओएन एक बेहतर विकल्प है क्योंकि इसकी मानव-पठनीय (यदि इसकी "सुंदर मुद्रित", कॉम्पैक्ट किए गए रूप में नहीं है!), मानव संपादन योग्य और हर प्रमुख भाषा में आजकल JSON- समर्थन है। हालांकि, आप पीछे की संगतता खो देंगे, उदा। पायथन के साथ, JSON संस्करण 2.6+ की आवश्यकता है।

+1

मैं उत्तर के एक हिस्से के साथ समस्या उठाता हूं: एक्सएमएल मनुष्यों द्वारा आसानी से पठनीय/संपादन योग्य नहीं है? यह इसके बड़े फायदे हैं। (यह जेएसओएन की तुलना में अधिक वर्बोज़ है, और JSON के साथ कुछ भी गलत नहीं है) – ViennaMike

+1

ठीक है, आप सही हैं कि यह PHP के क्रमबद्ध प्रारूप या पायथन अचार की तुलना में अधिक पढ़ने योग्य है। लेकिन यह भी अत्यंत verbose है, जो लिखते समय पढ़ने और बोझिल जब मुझे विचलित लगता है। किसी कारण के लिए "एक्सएमएल संपादकों" नामक एक पूरी सॉफ्टवेयर श्रेणी है;) – c089

+0

मैंने जवाब को "आसानी से नहीं" पढ़ने के लिए बदल दिया। – c089

1

आप वहां डालने की क्या योजना बना रहे हैं? प्रत्येक नई लाइन

  • SQLite पर

    • कस्टम टैग के साथ एक्सएमएल
    • कुंजी-मान जोड़ों:

      आप विकल्पों का भार है?

  • +1

    मैं SQLite को कॉन्फ़िगरेशन के रूप में अनुशंसा नहीं करता क्योंकि आपको एप्लिकेशन सेट अप करने के लिए SQLite क्लाइंट टूल की आवश्यकता होगी और आपको SQL क्वेरी से परिचित होने की भी आवश्यकता होगी। – RaYell

    13

    *.ini कि

    [MyApp] 
    var1 = "foo" 
    var2 = "bar" 
    
    [MyPlugin] 
    var1 = "qwe" 
    

    आप आसानी से पढ़ सकते हैं का उपयोग कर parse_ini_file()

    $config = parse_ini_file('/path/to/config/file', true); 
    echo $config['MyApp']['var2']; 
    
    +0

    ग्रेट उत्तर। विशेष रूप से यदि दीर्घकालिक भाषा का दायरा PHP के रूप में रहता है। मैं अपने अनुप्रयोगों में अपने "लीवर और नियंत्रण के knobs" के रूप में हर समय .ini फ़ाइलों का उपयोग करें। – pimbrouwers

    +0

    क्या आईएनआई मल्टीलाइन स्ट्रिंग का समर्थन करता है? – starbeamrainbowlabs

    2

    एक्सएमएल के लिए बहुत अच्छी एक्सएमएल फाइल को पढ़ने के लिए सबसे प्रोग्रामिंग langauge privide एपीआई के रूप में इस उद्देश्य के लिए सबसे अच्छा है होना चाहिए ।

    +9

    एक्सएमएल बनाए रखने के लिए दर्द है। –

    +2

    ... और एक्सएमएल धीमा है! – Marecky

    +0

    xml शैतान द्वारा बनाया गया है .. – slier

    0

    जूमला ने हाल ही में आईएनआई फाइलों से JSON एन्कोडेड फ़ाइलों में स्विच किया। json_encode() और json_decode() का उपयोग करके एन्कोडिंग और डिकोडिंग जेसन आईएनआई फ़ाइलों को पढ़ने और लिखने से बेहतर प्रदर्शन करता है।

    हालांकि कोई कमी है: जेसन आसानी से मानव पठनीय नहीं है। आपको अपनी कॉन्फ़िगरेशन फ़ाइल को एन्कोड करने के लिए एक php स्क्रिप्ट का उपयोग करने की आवश्यकता है। जब आप अपनी वेबसाइट के व्यवस्थापक भाग में अपनी कॉन्फ़िगर लिखना चाहते हैं तो आप इस समाधान का अच्छी तरह से उपयोग कर सकते हैं।

    +5

    मैं कहूंगा कि JSON बहुत अधिक मानव-पठनीय है (मानक PHP क्रमिकरण प्रारूप के विपरीत)। –

    3

    JSON मेरी राय में, एक अच्छा विकल्प है। आप इस तरह के रूप में अपने डेटाबेस स्कीमा निर्धारित कर सकते हैं:

    { 
        table1: { 
         id: { 
          type:"int", 
          autoincrement:true 
         }, 
         some_field: { 
          type:"string", 
         } 
        }, 
        table2: { // etc 
        } 
    } 
    

    तो बस एक PHP सरणी में इस बारी करने के json_decode का उपयोग करें।

    उदा।

    $tables = json_decode($json_text); 
    foreach ($tables as $tablename => $t) { 
        foreach ($t as $fieldname => $field) { 
         echo "Table {$tablename} has a record called {$fieldname}"; 
        } 
    } 
    

    यह मुद्रित होगा: Table table1 has a record called id Table table1 has a record called some_field

    JSON ज्यादा मेरी राय में XML, और json_encode से साथ काम करना आसान है/डिकोड बहुत तेजी से वहाँ बहुत कम भूमि के ऊपर है। मेरी राय में, यह एक्सएमआई फाइलों की तुलना में एक्सएमएल की तुलना में बहुत अधिक पठनीय है और जटिल डेटा संरचनाओं के साथ बेहतर है। कुछ लोग वाईएएमएल पसंद करते हैं, लेकिन वाक्यविन्यास में वास्तव में बहुत अंतर नहीं है।

    1

    मेरी प्राथमिकता

    1. अच्छी तरह से प्रलेखित php फ़ाइल है
    2. उपयोगकर्ता विशिष्ट विन्यास के लिए
    3. डेटाबेस

    जैसे वर्डप्रेस और अनगिनत अन्य php अनुप्रयोगों

    0

    का उपयोग लोग वास्तव में आप दे दिया है पहले से ही अच्छे जवाब। व्यक्तिगत रूप से मुझे आपकी दस्तावेज़ रूट के बाहर .ini फाइलें पसंद हैं। यह भी सुनिश्चित करें कि (यदि आप लिनक्स होस्टिंग एनवी पर हैं) कि आपकी फ़ाइल केवल आपके वेब सर्वर द्वारा पठनीय है और लिखने योग्य नहीं है।

    आप बस आईएनआई फ़ाइल को पार्स कर सकते हैं और अपनी कॉन्फ़िगरेशन सेटिंग्स का उपयोग कर सकते हैं। (यह है कि यदि आप PHP या तो जैसी भाषा का उपयोग कर रहे हैं, तो जावास्क्रिप्ट ect यहां काम नहीं करेगा।)

    लेकिन ऐसा लगता है जैसे उन्होंने कहा। यह सब इस बात पर निर्भर करता है कि आप अपनी कॉन्फ़िगरेशन फ़ाइल में कौन सा डेटा रखना चाहते हैं और आप इसके साथ क्या करना चाहते हैं।

    सादर कॉनरोड ग ',)

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