मेरे पास एक कक्षा है जो कुछ बुनियादी HTML5 लेती है और कुछ डोम जादू के साथ इसे एक कक्षा में बदल देती है जो एक एक्सटेंशन simpleXMLElement है। यह सब एक "कारखाने" से शुरू होता है (मैं उस शब्द को थोड़ा दुरुपयोग कर सकता हूं) क्लास को XPage कहा जाता है।मैं PHP में रूट ऑब्जेक्ट के लिए एक पुनरावृत्ति ऑब्जेक्ट संदर्भ कैसे प्राप्त करूं?
इस प्रकार हम
<?php
$MyPage = new XPage($HTML);
अब तक तो अच्छा हो सकता है। क्या मैं अब क्या करने की जरूरत एक्सएमएल दस्तावेज़ के कुछ भागों का चयन इतना है कि वे "बुकमार्क किए गए" किया जा सकता है (मुझे यकीन है कि इसके लिए एक बेहतर नाम नहीं है कि कर रहा हूँ) तो भी इस
$MyPage->ThatBit("foo")->addChild('p',$MyParagraph);
आदर्श रूप में मैं की तरह जा सकते हैं
$MyPage->page()->body->header->RememberThisBitAs("foo");
या कुछ सहज रूप से समान करने में सक्षम होना चाहते हैं। तब क्या होना चाहिए कि ऑब्जेक्ट $ MyPage (प्रकार XPage) को संदर्भित किया जाना चाहिए, इस मामले में एचटीएमएल/बॉडी/हेडर (शायद यह सही नहीं है XPath नोटेशन लेकिन उम्मीद है कि आप अनुसरण कर सकते हैं)।
विचार यह है कि सबसे अधिक पहुंच वाले क्षेत्रों को अधिक आसानी से प्राप्त किया जा सकता है। यह वह जगह है जहां सिंपलएक्सएमएल क्लास (मेरे एक्सटेंशन के साथ भी) किसी अन्य फैक्ट्री के बिना ऐसा नहीं कर सकती है और एक्सपीज को सिंगलटन भी बना सकती है।
हालांकि यह XPage क्लास ($ MyPage) है जिसमें "बुकमार्क" की सरणी है। जहां तक मुझे पता है कि SimpleXML के पुनरावृत्तियों को संदर्भित करने का कोई तरीका नहीं है ताकि बच्चे का बच्चा या बच्चा फैक्ट्री को "कृपया मुझे बुकमार्क करें" नहीं बता सके।
यह मुझे छोड़ तरह बुरा काम करने होंगे:
$MyPage->addBookmark("foo",
$MyPage->page()->body->header->getChildren());
कौन सा ही सही प्रतीत नहीं होता।
या
$MyPage->page()->body->header->RememberThisBitAs("foo",$MyPage);
जो इतना बुरा नहीं है, लेकिन अभी भी "लगता है" गलत।
अत्यधिक ऑब्जेक्ट युग्मन या बदसूरत आत्म संदर्भ के बिना मैं इसका कैसे उपयोग करूं?
अद्यतन
मैंने सोचा अगर यह संभव हो गया था debug_backtrace का उपयोग कर एक वर्ग पार उल्टा करने के लिए, लेकिन जवाब नहीं प्रतीत होता है।
In PHP is it possible to reverse traverse a Traversable class to find the root object?
अन्य समान परीक्षण मुझे पता चला है कि एक तत्व पर एक वर्ग चर के मूल्य की स्थापना traversable ढेर में किसी भी अन्य तत्व में सुलभ नहीं है।
मैं रैपर सुझाव पर ध्यान केंद्रित करने जा रहा हूं।
अद्यतन
SimpleXML वास्तव में एक सच्चे वस्तु लेकिन एक सिस्टम संसाधन नहीं है। यह समझा सकता है कि मेरा दर्द कहां से आ रहा था।नोट्स कहें: http://php.net/manual/en/class.simplexmlelement.php
तो सभी वस्तुओं के लिए एक-दूसरे को बुलाते हुए वस्तुओं की एक श्रृंखला की तरह लग रहा है, यह वास्तव में मामला नहीं है।
मुझे लगता है कि मैंने इस प्रश्न के साथ कुछ गलत किया है? मैं तब तक नहीं सीख सकता जब तक मुझे निर्देश नहीं दिया जाता है। –
बस प्रतीक्षा करें और आपको शायद उत्तर मिल जाएगा। – ForceBru
ठीक है, मैं चिंता करना शुरू कर रहा था मैंने एक बुरा सवाल पूछा था। धन्यवाद। –