2012-08-10 10 views
87

मेरे पास लगभग 40 इकाइयां हैं और कई द्विपक्षीय संबंध हैं। जब भी मैं var_dump ($ उपयोगकर्ता) या किसी भी इकाई का उपयोग करता हूं, तो मेरा ब्राउज़र सरणी और चर के बहुत अधिक डेटा के साथ लोड हो जाता है, फिर यह क्रैश हो जाता है।symfony2 doctrine2 में var_dump के साथ बहुत अधिक डेटा

मैं समस्या क्या चाहता हूं।

डेटा ठीक से डाला जा रहा है। क्या मैं उत्पादन में समस्या का कारण बन सकता हूं।

+0

हम किस ब्राउज़र के बारे में बात कर रहे हैं? –

+3

क्या आप xdebug का उपयोग कर रहे हैं? यदि नहीं, तो इसका उपयोग करने पर विचार करें और var_dump के बजाय बस एपलीप्स, नेटबीन्स या पीएचपीएसटॉर्म जैसे आईडीई के साथ चरण डीबगर का उपयोग करें। ये सभी वैरिएबल डेटा को अच्छी तरह से प्रदर्शित करेंगे। – hakre

+0

"क्रैशिंग" से आपका क्या मतलब है - ब्राउज़र एप्लिकेशन (या टैब) बंद है, या यह कोई परिणाम प्रदर्शित नहीं करता है, या पृष्ठ बाधित है? – Yuriy

उत्तर

197

var_dump() डिबग विधि डंप() सिद्धांत आम द्वारा प्रदान के साथ बदलें।

\Doctrine\Common\Util\Debug::dump($user); 

यह एकल वस्तुओं और सिद्धांत संग्रह के लिए काम करता है और आपके पास होने वाले मुद्दों को प्रदर्शित करने से ब्राउज़र को रोकना चाहिए।

+1

धन्यवाद दोस्त, जो पूरी तरह से काम करता है – user825904

+0

यह एरे के साथ कई परिणाम के लिए भी काम करता है – GusDeCooL

+3

आप ** डंप() '** डंप()' के साथ 'डंप()' डंप() 'दूसरा तर्क ** MaxDepth ** भी कर सकते हैं। –

2

समस्या यह है कि एक द्विपक्षीय संबंध में दोनों संस्थाओं के पास एक दूसरे के लिए एक लिंक होता है, इसलिए इकाई 1 var_dump को प्रदर्शित करने के दौरान इकाई 2 के सभी गुणों को मुद्रित करना होगा, जिसमें इकाई 1 स्वयं आपको एक लूप दे रहा है।

19

अच्छी तरह से स्वरूपित:

echo '<pre>'; 
\Doctrine\Common\Util\Debug::dump($user, $recurciveLevelToDisplay); 
echo '</pre>'; 
1

get_object_vars() दृश्य भी सुधार होगा।

echo "<pre>"; 
\Doctrine\Common\Util\Debug::dump(get_object_vars($user)); 
1

बस गूंज serialize (उपयोगकर्ता $) का उपयोग करें;

0

सिम्फनी 2.6 के साथ अब आप अपने नियंत्रक में डंप ($ var) और {{डंप (var)}} का उपयोग कर सकते हैं।

सरणी ('dev', 'test') अनुभाग में, अपनी AppKernal.php फ़ाइल में इसे जोड़ना सुनिश्चित करें।

$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle(); 
3

सरल और आसान उदाहरण।

var_dump(serialize($Object)); 
+0

मैं 'धारावाहिक' आउटपुट को सरल और पढ़ने में आसान नहीं कहूंगा। –

1

डंप ($ उपयोगकर्ता) का उपयोग करें और आप सिम्फनी प्रोफाइलर में सही परिणाम देख सकते हैं! सौभाग्य

1

Symfony < 2,6

आप \Doctrine\Common\Util\Debug::dump($variable, $depth); उपयोग कर सकते हैं यह प्रॉक्सी जानकारी के बिना सिद्धांत उत्पादन प्रदर्शित करता है।

Symfony> 2.6

आप सिम्फोनी 2.6 या उससे अधिक का उपयोग कर रहे हैं, तो मैं दृढ़ता से सलाह आप dump() उपयोग करने के लिए। यह एक अच्छी तरह से तैयार और रंगीन आउटपुट दिखाता है, और आप पंक्तियों को गतिशील रूप से व्यय/छुपा सकते हैं। enter image description here