2012-06-30 8 views
14

debug_backtrace पर PHP मैनुअल में इस प्रविष्टि को समझने का प्रयास कर रहा है।PHP डीबग_बैकट्रैक बिटमैस्क उपयोग

मैं द्वारा

मैं bitmasks पर वेब खोज किया है "इस पैरामीटर बिटमास्क के लिए .... कि" समझ में नहीं आता कि वे क्या मतलब है और मेरे सिर दौर स्पिन हो रही है तो मैं फैसला किया है मैं नहीं वास्तव में इसके बारे में विस्तार जानना चाहते हैं, लेकिन यह जानने के लिए कि मैं उस फ़ंक्शन में विकल्पों को कैसे जोड़ सकता हूं।

मैं

debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT, DEBUG_BACKTRACE_IGNORE_ARGS) 

अगर मैं दोनों चाहते हैं के रूप में दोनों विकल्पों में डाल दिया और उनमें से एक है, तो मैं सिर्फ यह है कि एक चाहते हैं?

उत्तर

8

इसका मतलब है कि आप बिटवाई या ऑपरेटर के साथ विकल्पों को जोड़ते हैं: |

उदाहरण के लिए:

debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS); 

bitmasks के बारे में अधिक जानकारी के लिए: http://en.wikipedia.org/wiki/Mask_(computing)

10

स्थिरांक दशमलव में 2^n, या (10) के मूल्यों होगा^n बाइनरी में। उदाहरण के लिए - 1, 10, 100, 1000, आदि (बाइनरी में)।

कहो a=001, b=010, c=100:

आप बिटवाइज़ या पर कर सकते हैं, उदाहरण के लिए, a और b के लिए। इसका मतलब यह होगा कि प्रत्येक बिट 'चालू' हो जाएगा यदि एक या तो बी में एक ही बिट 'चालू' है।

a | b == 011 

यह एक बिटमास्क है। bitmask, द्वारा

bitmask & a != 0 

कौन सा

011 & 001 == 001 != 0 

हालांकि है a के शामिल किए जाने के लिए जाँच की है, क्योंकि सी bitmask में नहीं है:

bitmask & c == 011 & 100 == 0 

तो, दोनों एक में शामिल हैं और करने के लिए बिटमैस्क में बी, आप बाइनरी या ऑपरेटर का उपयोग करते हैं।

debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS); 
+0

+1, जिस तरीके से आपने यह बताया – Wh1T3h4Ck5

+0

हाँ ... बहुत स्पष्ट है। पिछले को स्वीकार किया क्योंकि यह पहले आया था लेकिन प्रशंसा में इसे वोट दिया था। एक छोटा अनुवर्ती प्रश्न यह है कि क्या बिटमैस्क को एक php चर '$ x = a | में लोड करना संभव है बी; 'या नहीं। – Dayo

+1

हाँ यह है, बिटमैस्क केवल एक पूर्णांक है, इसलिए इसका उपयोग किसी अन्य अभिव्यक्ति के समान ही किया जा सकता है। –

11

जानते हैं कि उन 2 स्थिरांक (DEBUG_BACKTRACE_PROVIDE_OBJECT, DEBUG_BACKTRACE_IGNORE_ARGS) अर्थ में अलग हैं रहें। वर्तमान में DEBUG_BACKTRACE_PROVIDE_OBJECT एक अतिरिक्त ऑब्जेक्ट प्रदान करता है, जबकि DEBUG_BACKTRACE_IGNORE_ARGS मौजूद होने पर तर्क को स्ट्रिप्स करता है।

चूंकि इन स्थिरांक के लिए सबसे आम यूज-केस स्मृति उपयोग को कम करने के लिए है, कम से कम स्मृति की खपत के साथ तरीका है:

debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); 

नहीं

// false friend! 
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS); 

यह DEBUG_BACKTRACE_PROVIDE_OBJECT की डिफ़ॉल्ट को ओवरराइड और इसके अलावा DEBUG_BACKTRACE_IGNORE_ARGS को अनदेखा करता है।

+0

बस मैं इसे कैसे समझाया चाहता था। –

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