2010-09-13 9 views
5

हाल के एक आवेदन को लिखते समय मैंने इसे घोषित करने से पहले गलती से एक सरणी भरना शुरू कर दिया।क्या किसी PHP सरणी को उपयोग से पहले घोषित करने की आवश्यकता है?

error_reporting (E_ALL); 
$array['value'] = 'Test string'; 

मैं E_ALL त्रुटि रिपोर्टिंग का उपयोग करता हूं और एक त्रुटि नहीं फेंक दी गई थी। क्या ये सही है? और यदि हां, तो क्या वास्तविक सरणी घोषित नहीं करते हुए सरणी मानों को घोषित करने में कोई समस्या है? शायद यह अच्छा प्रोग्रामिंग मानकों का पालन नहीं करता है।

+0

जब आप कहते हैं "नहीं फेंक दिया" तो क्या आपका मतलब है कि यह स्क्रीन पर नहीं दिखाया गया था या यह लॉग नहीं किया गया था (यदि आपका लॉगिंग स्तर सही ढंग से सेट किया गया है)। अगर यह लॉग हो गया है और आपके php.ini में अपनी display_errors सेटिंग को चेक नहीं किया गया है (इसे 1 पर सेट किया जाना चाहिए) - यह एक अच्छा संदर्भ है: http://php.net/manual/en/errorfunc.configuration.php – jlindenbaum

उत्तर

4

जबकि हाल ही में एक आवेदन लिख मैंने गलती से एक सरणी इससे पहले कि मैं यह घोषणा की थी भरने शुरू कर दिया ।

PHP एक कमजोर टाइप की गई भाषा है। आपका कथन:

$array['value'] = 'Test string'; 

एक सहयोगी सरणी के एक निहित घोषणा (असाइनमेंट के माध्यम से) है। तो, एक नोटिस उत्पन्न नहीं किया जाएगा।

हालांकि, अगर आप लिखने के लिए किए गए:

echo $array['value']; 

असाइनमेंट से पहले, तो आप एक Undefined variable नोटिस दिया जाएगा।

3

नहीं, आप

की जरूरत नहीं है और हाँ, यह कोड redability

2

उस पर विस्तार करने के लिए बढ़ाने के लिए सरणी घोषित करने के लिए एक अच्छी आदत है, कोई आप "है" नहीं, लेकिन यह फायदेमंद हो सकता है।

यदि आपके पास E_NOTICES बंद हो गया है तो आपको एक गैर-प्रारंभिक चर से त्रुटियां नहीं दिखाई देगी। उत्पादन पर आपको इसे बंद करना चाहिए, लेकिन विकास पर आपको इसे चालू करना चाहिए। यह आपको उन समस्याओं को खोजने की अनुमति देगा जिन्हें आप नहीं देख सकते हैं।

+1

मैं सहमत हूँ। उपयोग से पहले एक सरणी घोषित करना हमेशा अच्छा अभ्यास है। –

+3

इसके अलावा, उत्पादन पर इसे बंद करने का कोई कारण नहीं है। मेरा मतलब है, अगर आपका कोड साफ है तो कुछ भी रिपोर्ट नहीं की जाएगी। –

+0

"उत्पादन पर आपको इसे बंद करना चाहिए" क्यों? निश्चित रूप से "देव परीक्षण से पहले त्रुटियों को हल करना चाहिए", लेकिन अगर वे नहीं करते हैं तो क्या होगा? हालांकि, अगर संभावना है कि प्रोड में कोई समस्या है तो आप उन्हें देखना चाहते हैं। यदि आपको प्रोड में भी इन्हें दिखाने के लिए त्रुटि रिपोर्टिंग है, और त्रुटियां हैं, तो आप उन्हें पकड़ते हैं, और यदि कोई त्रुटि नहीं है तो कोई लॉग भी नहीं है। इसलिए उत्पादन में इसे बंद करने के कोई कारण नहीं हैं। – James