2011-05-20 14 views
16

मैंने SimpleXMLElement() कक्षा के बजाय कोडर के बहुत सारे SimpleXML_load_string() को लागू किया है। क्या बाद में पूर्व का उपयोग करने के लिए कोई लाभ है? मैंने PHP manual on simplexml पढ़ा है। मैं यह समझने में सक्षम नहीं था कि यह क्या है।PHP: SimpleXMLElement() क्लास और SimpleXML_load_string() के बीच क्या अंतर है?

कोई भी मदद और मार्गदर्शन (शायद उदाहरणों के माध्यम से) की बहुत सराहना की जाएगी। अग्रिम में धन्यवाद।

उत्तर

17

simplexml_load_string() (नाम के रूप में) एक स्ट्रिंग से xml लोड करें और SimepleXMLElement का ऑब्जेक्ट देता है। इस बीच और वर्ग के सामान्य कन्स्ट्रक्टर का उपयोग करने के बीच कोई अंतर नहीं है।

अद्यतन:

SimpleXML::__construct() एक अतिरिक्त पैरामीटर (तीसरा) bool $data_is_url = false है। यदि यह true है तो व्यवहार simplexml_load_file() (सामान्य स्ट्रीम रैपर के संयोजन के साथ) जैसा ही है। इस प्रकार simplexml_load_*() -फंक्शन दोनों समान कार्यक्षमता को SimpleXML::__construct() के रूप में कवर करते हैं।

अतिरिक्त कार्य simplexml_load_*() में दूसरा पैरामीटर string $class_name = "SimpleXMLElement" है जो ऑब्जेक्ट की कक्षा को वापस करने के लिए निर्दिष्ट करने के लिए है। नहीं कार्यों का एक विशिष्ट सुविधा thats, क्योंकि आप हमेशा की तरह instanciation भी

class MyXML extends SimpleXMLElement {} 
$a = new MyXML($xml); 
$b = simplexml_load_string($xml, 'MyXML'); 

OOP- और प्रक्रियात्मक दृष्टिकोण बीच एक अंतर है, कि कार्यों त्रुटि पर लौट false के साथ बहुत कुछ इसी तरह "उपयोग" सकता है, लेकिन कन्स्ट्रक्टर एक अपवाद फेंकता है।

+0

सुनिश्चित नहीं हैं कि मैं यह है कि एक याद किया। 'Simplexml_load_string()' का उपयोग कर XML को दूरस्थ रूप से पुनर्प्राप्त करने के बारे में कैसे? क्या यह अभी भी 'SimpleXMLElement() 'जैसा ही काम करता है? – VicePrez

+0

जब तक आप xml डेटा को स्ट्रिंग के रूप में पुनर्प्राप्त करते हैं, हां (उदा। 'File_get_contents() 'के माध्यम से)।यदि नहीं, तो आप ए) को 'SimpleXMLElement :: __ निर्माण() ', या बी के तीसरे तर्क को सेट करना होगा) संक्षिप्त होने के लिए' simplexml_load_file() 'http://php.net/simplexml-load-file – KingCrunch

+0

+1 का उपयोग करें । इसे तोड़ने के लिए धन्यवाद। – VicePrez

0

simplexml_load_string एक अलग वस्तु लौट सकते हैं:

CLASS_NAME

आप इस वैकल्पिक पैरामीटर कि तो simplexml_load_string() निर्दिष्ट वर्ग का वस्तु वापस आ जाएगी उपयोग कर सकते हैं। कक्षा को SimpleXMLElement क्लास का विस्तार करना चाहिए।

+0

दोस्त क्या आपने इसे मैनुअल से कॉपी किया है? – VicePrez

+0

@VicePrez हाँ। यदि आप चाहें तो मैं इसे लिंक कर सकता हूं, लेकिन चूंकि आप पहले से ही अपने प्रश्न में मैनुअल का जिक्र करते हैं, ऐसा नहीं लगता था कि यह आवश्यक था। – Mel

3

यह ज्यादातर सुविधा रैपर है। आधार तत्व को स्वयं बनाने के साथ, आपको कुछ भी पूरा करने के लिए कोड की कम से कम दो पंक्तियों की आवश्यकता होती है। simplexml_load_string() के साथ एक एकल अभिव्यक्ति पर्याप्त हो सकता है:

print simplexml_load_string($xml)->title; 

की तुलना में कम है:

$e = new SimpleXMLElement($xml); 
print $e->title; 

और फिर जाहिर है, वहाँ भी समारोह हस्ताक्षर में मामूली बदलाव है।

अद्यतन: और बिल्कुल वैसा ही लंबाई के रूप में की

print(new SimpleXMLElement($xml))->title; 
संबंधित मुद्दे