पूर्ण ऑब्जेक्ट / सरणी दिखाने के लिए xdebug var_dump कैसे प्राप्त करें


310

मैं 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दिखाता है ?


Print_r सभी नेस्टेड मानों के साथ पूरा एरे प्रिंट करेगा।
रश्मि जैन

जवाबों:


603

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

; with sane limits
xdebug.var_display_max_depth = 10
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', '10');
ini_set('xdebug.var_display_max_children', '256');
ini_set('xdebug.var_display_max_data', '1024');

Xdebug सेटिंग्स को आधिकारिक दस्तावेज में समझाया गया है


19
मैं तर्क देता हूं कि यदि आप वास्तव में अपने से कोई जानकारी प्राप्त करने की अपेक्षा रखते हैं तो display_max_depth5 में से एक भी समझदार नहीं हैvar_dump
बेन हेरोल्ड

2
@BenHarold आप तब एक सेटिंग के रूप में क्या सुझाएंगे?
एरीटे म्यबर्ग

6
@ AnriëtteMyburgh यह वास्तव में आपके कोड पर निर्भर करता है। गैर-जटिल सरणियाँ या JSON 5 के साथ ठीक हो सकती है - 10 शायद पर्याप्त से अधिक है, लेकिन यदि आप सिम्फनी फ्रेमवर्क ऑब्जेक्ट्स की गहराई से जांच करना चाहते हैं, तो आप बिना किसी सीमा के बेहतर हो सकते हैं। कोई भी सुझाव एक आकार-फिट-सभी नहीं है।
माइकल बर्कोव्स्की

3
मैंने पिछले छह महीनों में दस से अधिक बार इस उत्तर का दौरा किया है। धन्यवाद माइकल बर्कोव्स्की, मैं हमेशा आपके ऋण में हूं।
लिंकन बर्गेसन

2
@LincolnBergeson मुझे इसे हर समय खुद भी देखना होगा।
माइकल बेरकोव्स्की

38

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

यदि आप json प्रारूप पढ़ने में सहज हैं, तो आप अपने var_dump को बदल सकते हैं:

return json_encode($myvar);

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

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

error_log(json_encode($myvar));

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


12
मुझे यह जवाब पसंद है। आपके पास कुछ इस तरह से एक सुंदर HTML आउटपुट भी हो सकता है: '<pre>'। Json_encode ($ myvar, JSON_PRETTY_PRINT); '</ pre>';
डेविड

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

2
यह भी ध्यान देने योग्य है, json_encoding कुछ आपको प्रकार नहीं दिखाएगा, इसलिए यह पहचानना अधिक कठिन है कि क्या कुछ उचित रूप से मेल खाता है।
SEFF

13

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

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

यह शून्य सेट अप के साथ काम करता है और इसमें Xdebug के var_dump की तुलना में बहुत अधिक सुविधाएँ हैं। किंत के साथ मक्खी पर नेस्टेड सीमा को बायपास करने के लिए, बस उपयोग करें

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

12

मुझे पता है कि यह देर हो चुकी है लेकिन यह कुछ काम की हो सकती है:

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

21
print_r()है var_dump के लिए एक स्थानापन्न।
आराधना

शानदार जवाब। धन्यवाद।
PHPst

@ArrDaemon गंभीरता से?
PHPst

var_dump ([झूठी]); print_r ([झूठी]);
आराधनामान

मुझे पता है कि यह देर हो चुकी है लेकिन - print_r () पूरी तरह से var_dump () के लिए एक प्रतिस्थापन हो सकता है जो आप चाहते हैं! मैं लगभग कभी भी var_dump () का उपयोग नहीं करता हूं क्योंकि मैं अक्सर सरणियों और IMO के संरचनाओं को दिखाना चाहता हूं print_r () दिखाता है कि var_dump () से बहुत बेहतर है।
bestprogrammerintheworld


3

मैं सिफारिश करना चाहता हूं var_export($array)- यह प्रकार नहीं दिखाता है, लेकिन यह सिंटैक्स उत्पन्न करता है जिसे आप अपने कोड में उपयोग कर सकते हैं :)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.