2009-05-30 17 views
9

मैंने हाल ही में एक नए सेटअप पर स्विच किया है जो PHP नोटिस की रिपोर्ट कर रहा है; इन नोटिस को ठीक किए बिना मेरे कोड ने ठीक काम किया है, लेकिन मुझे आश्चर्य है कि क्या हर किसी को ठीक करने और उन्हें सूचित करने या उन्हें अनदेखा करने और नोटिस रिपोर्टिंग बंद करने का अर्थ है।क्या PHP 'नोटिस' की सूचना दी जानी चाहिए?

इस पर कुछ अलग राय क्या हैं? क्या नोटिस से जुड़े कोई सर्वोत्तम अभ्यास हैं?

उत्तर

18

त्रुटियां त्रुटियां हैं। उन्हें आपके कोड के काम से पहले तय करना होगा।

चेतावनी चेतावनियां हैं। वे आपको चेतावनी देते हैं कि आप जो भी कर रहे हैं वह शायद एक बुरा विचार है, भले ही यह आपके लिए काम करता है (या काम करने लगता है)। तो वे भी शायद तय किया जाना चाहिए।

नोटिस नोटिस हैं। उन्हें ध्यान दिया जाना चाहिए। इसके कारण नाम। यह कोई समस्या नहीं हो सकती है कि आपका कोड कुछ उत्पन्न करता है, लेकिन ऐसा कुछ है जिसे आपको केस-दर-मामले आधार पर जांचना और न्याय करना चाहिए।

और निश्चित रूप से, यदि आपको उनमें से 400 नहीं मिलते हैं तो नोटिस नोटिस करना बहुत आसान है। तो उन्हें खत्म करने की कोशिश करने के लिए एक बड़ा फायदा है। यह उन लोगों को बनाता है जिन्हें आपने अभी तक देखा नहीं है और अधिक ध्यान देने योग्य बन गया है।

0

एक उत्पादन वातावरण में आपको किसी भी नोटिस को प्रदर्शित नहीं करना चाहिए।

भले ही वे आपके आवेदन को क्रैश करें।

यह सिर्फ एक सुरक्षा टिप है।

यदि आप किसी पुराने PHP संस्करण से हाल ही में माइग्रेट करते हैं, तो आपको कम से कम नोटिस पर एक नज़र डालना चाहिए, यह जानने के लिए कि यह क्या है। कभी-कभी यह सुरक्षा के बारे में है, कभी-कभी सिर्फ आपको सूचित करता है कि यह फ़ंक्शन बहिष्कृत है।

आपको नोटिस के बारे में भी ध्यान रखना चाहिए, सिवाय इसके कि अगर आप वास्तव में जानते हैं कि आप क्या कर रहे हैं।

+0

यह प्रश्न [error_reporting] (http://www.php.net/manual/en/function.error-reporting.php) नहीं है [display_errors] (http://www.php.net/manual/ एन/errorfunc.configuration.php # ini.display-त्रुटियों)। – dotancohen

2

उन्हें चेतावनियां कहा जाता है क्योंकि आपका प्रोग्राम अभी भी काम करता है - लेकिन इसका मतलब है कि आपने कुछ गलत किया है। अगर आपको ऐसा करने का समय मिल गया है और यदि आप चाहते हैं कि कोड "साफ" और संभवतः अच्छा हो। यदि आपको चेतावनियां मिलती हैं तो आपका कोड अच्छा नहीं है।

... और चेतावनी त्रुटियों को जन्म दे सकती:

यह मतलब है कि आप एक अपरिभाषित चर चेतावनी मिलती है कि आप एक चर के होने की जाँच नहीं की। यदि आप इस चर का उपयोग MySQL क्वेरी में करते हैं तो क्या होगा? यह असफल हो जाएगा और आपके कार्यक्रम को तोड़ देगा।

लाइव वेबसाइट पर चेतावनियां प्रदर्शित न करें। वे आपके कोड के कुछ हिस्सों को बाहर प्रस्तुत करते हैं।

सबसे अच्छा तरीका कोड को इस तरह से कोड करना है जो चेतावनियों से बचाता है। ;)

9

हां, मैं लिखने वाले किसी भी PHP कोड से नोटिस को खत्म कर दूंगा, भले ही यह केवल सभी सूचनाओं की जांच करने के बाद विशिष्ट नोटिस आईडी बंद कर रहा हो। नोटिस (यानी अपरिभाषित इंडेक्स, प्रारंभिक चर) अक्सर एक ऐसी स्थिति को इंगित करते हैं जिसे आप अनुमानित करना भूल गए हैं। आपको प्रत्येक की जांच करनी चाहिए, वास्तविक समस्याओं को खत्म करना चाहिए, फिर संभवतः दूसरों को दबाना चाहिए (एक टिप्पणी के साथ क्यों)।

PHP मैनुअल स्वयं ही बताता है कि "नोटिस संदेश आपको खराब शैली के बारे में चेतावनी देंगे", इसलिए मुझे लगता है कि आधिकारिक "सर्वोत्तम अभ्यास" जो मैंने उल्लिखित किया है, उतना ही होगा। अच्छी शैली का पालन करें, जब तक आपके पास वैध कारण न हो।

3

यह नोटिस पर निर्भर करता है - अधिकांश नोटिस खराब कोड गंध के सबूत हैं - अपरिभाषित सरणी इंडेक्स इत्यादि। यदि आप नोटिस दबाते हैं, तो इसके आगे एक टिप्पणी छोड़ दें जो आपको लगता है कि इसे क्यों दबाया जाना चाहिए।

PHP.net कहते हैं

नोट: सक्षम करने से E_NOTICE दौरान विकास कुछ फायदे हैं। डीबगिंग उद्देश्यों के लिए: नोटिस संदेश आपको में आपके कोड के संभावित बग के बारे में चेतावनी देगा। उदाहरण के लिए, असाइन किए गए मानों का उपयोग चेतावनी दी जाती है। यह टाइपो खोजने के लिए बेहद उपयोगी है और डिबगिंग के लिए समय बचाएं।नोटिस संदेश आपको खराब शैली के बारे में चेतावनी देंगे। उदाहरण के लिए, $ arr [item] $ arr ['item'] के रूप में लिखा जाना बेहतर है क्योंकि PHP "आइटम" को स्थिरता के रूप में व्यवहार करने का प्रयास करता है। यदि यह स्थिर नहीं है, तो PHP मानता है कि यह सरणी के लिए एक स्ट्रिंग इंडेक्स है।

मैं प्रत्येक कोड को आपके कोड को बेहतर बनाने के लिए एक स्वतंत्र अवसर के रूप में व्यवहार करता हूं। :)

0

अपरिभाषित चर और अपरिभाषित अनुक्रमणिका तक पहुंचने की कोशिश करने जैसी चीजें हर गंभीर प्रोग्रामर की पुस्तक में गंभीर त्रुटियां हैं, इसलिए मुझे वास्तव में यह समझ में नहीं आता कि उन्होंने ऐसा कुछ क्यों चुना है जिसे आप नोटिस कर सकते हैं और झुका सकते हैं और चले जा सकते हैं। मुझे पता है कि हर दूसरे संकलक बस उस सटीक स्थान पर कार्यक्रम को रद्द कर देगा।

मैं हमेशा उन्हें ठीक कर दूंगा, वे लगभग हमेशा खराब त्रुटियों का कारण हैं।

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