2012-04-03 12 views
240

दिखाने के लिए xdebug var_dump कैसे प्राप्त करें WAMP पर मैं xdebug (php_xdebug-2.1.2-5.3-vc9.dll) का उपयोग कर रहा हूं। जब मैं var_dump का उपयोग किसी बड़े ऑब्जेक्ट या चर पर करता हूं तो यह पूर्ण चर नहीं दिखाता है।पूर्ण ऑब्जेक्ट/सरणी

array 
'node' => 
    array 
    'my_form' => 
     array 
     'form' => 
      array 
      ... 

xdebug के बिना यह दिखाया जाना चाहिए जैसा कि अपेक्षित होना चाहिए। मैंने प्रलेखन को देखा लेकिन समाधान नहीं देखा। क्या कोई जानता है कि मैं इसे कैसे ठीक कर सकता हूं ताकि xdebug var_dumpपूर्ण ऑब्जेक्ट दिखाता है?

+0

print_r सभी नेस्टेड मानों के साथ पूरा सरणी प्रिंट होगा। –

उत्तर

464

ये php.ini में विन्यास चर हैं:

; with sane limits 
xdebug.var_display_max_depth = 5 
xdebug.var_display_max_children = 256 
xdebug.var_display_max_data = 1024 


; with no limits 
; (maximum nesting is 1023) 
xdebug.var_display_max_depth = -1 
xdebug.var_display_max_children = -1 
xdebug.var_display_max_data = -1 

बेशक, ये भी ini_set() के माध्यम से क्रम पर सेट किया जा सकता है, उपयोगी अगर आप php.ini को संशोधित नहीं करना चाहते हैं और अपने वेब सर्वर को पुनरारंभ करना चाहते हैं, लेकिन कुछ और गहराई से जांच करने की आवश्यकता है।

ini_set('xdebug.var_display_max_depth', 5); 
ini_set('xdebug.var_display_max_children', 256); 
ini_set('xdebug.var_display_max_data', 1024); 

Xdebug settings are explained in the official documentation

+0

यदि कोई भी अपने php.ini के लिए सही तरीके से काम करने के लिए संपादन प्राप्त करने में असमर्थ है या आईएनआई फ़ाइल नहीं ढूंढ पा रहा है, तो विकल्प फ्लाई पर सेटिंग्स को बदलना है, जो यहां दिखाया गया है http://stackoverflow.com/a/8331138/89211 – Relequestual

+11

मेरा तर्क है कि 5 का 'display_max_depth' ** ** ** नहीं है यदि आप वास्तव में अपने 'var_dump' –

+1

@BenHarold से कोई जानकारी प्राप्त करने की अपेक्षा करते हैं तो आप सेटिंग के रूप में क्या अनुशंसा करेंगे? –

5

चेकआउट Xdebbug's var_dump settings, विशेष रूप से इन सेटिंग्स का मान:

xdebug.var_display_max_children 
xdebug.var_display_max_data 
xdebug.var_display_max_depth 
7

या आप एक विकल्प का उपयोग कर सकते हैं:

https://github.com/kint-php/kint

यह शून्य की स्थापना के साथ काम करता है और वैसे भी Xdebug के var_dump तुलना में बहुत अधिक विशेषताएं है। Kint फिरते नेस्टेड सीमा बाईपास के लिए, बस

+d($variable); // append `+` to the dump call 
24

का उपयोग मैं जानता हूँ कि यह एक सुपर पुराने पोस्ट है, लेकिन मैं समझ यह अभी भी मददगार हो सकता है।

आप पढ़ने json प्रारूप उपयुक्त लगता है आप के साथ अपने var_dump की जगह सकता है:

return json_encode($myvar); 

मैं इस का उपयोग कर एक सेवा मैं इमारत कुछ गहरा नीडिंत सरणियों है कि गया है के निवारण के लिए। यह कुछ भी छंटनी के बिना आपके सरणी के प्रत्येक स्तर को वापस कर देगा या आपको अपनी php.ini फ़ाइल को बदलने की आवश्यकता होगी।

इसके अलावा, इसका मतलब है क्योंकि json_encoded डेटा एक स्ट्रिंग है आप आसानी से त्रुटि लॉग करने के लिए लिख सकते हैं

error_log(json_encode($myvar)); 

यह शायद हर स्थिति के लिए सबसे अच्छा विकल्प नहीं है, लेकिन यह एक विकल्प है!

+5

मुझे यह जवाब पसंद है। आपके पास इस तरह के कुछ के साथ एक सुंदर HTML आउटपुट भी हो सकता है: '

'.json_encode($myvar, JSON_PRETTY_PRINT).'
' वापस लौटें; – David

+0

आह, अच्छा विचार! मैं इसे जोड़ने शुरू करने जा रहा हूँ। धन्यवाद! –

+5

ध्यान रखें कि सभी चर json_encodeable नहीं हो सकते हैं। ऑब्जेक्ट्स जो jsonserializable इंटरफ़ेस को कार्यान्वित नहीं करते हैं, केवल एक खाली सरणी "{}" –

7

मैं अब इस देर हो चुकी है लेकिन यह कुछ काम का हो सकता:

echo "<pre>"; 
print_r($array); 
echo "</pre>"; 
+11

'print_r()' ** ** ** var_dump के प्रतिस्थापन नहीं है। – AnrDaemon

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