स्टैकओवरफ़्लो पर, मैं इस मुद्दे को हर समय देखता हूँ:
- E_NOTICE? == E_DEBUG, और अधिक परिष्कृत error_handler के साथ isset () और @ से परहेज करना
- जब E_NOTICE चालू हो, तो PHP को $ _GET के लिए undefind इंडेक्स की जांच नहीं करने के लिए कैसे सेट करें?
- PHP को लॉग इन नोटिस त्रुटियों से रोकने के लिए कैसे
- मैं ऐसे PHP 5.3 नोटिस को कैसे बंद करूं?
यहां तक कि पक्का (जो ठोस पीएचपी सलाह का एक बहुत प्रदान करता है) खूंखार E_NOTICE
राक्षस के खिलाफ टकरा गया है और उपयोग करने की तुलना में बेहतर समाधान की उम्मीद करता है isset()
: isset () और खाली () कोड बदसूरत बनाते हैं
व्यक्तिगत रूप से, मैं का उपयोग करें isset()
और empty()
कई स्थानों में मेरी अनुप्रयोगों के प्रवाह का प्रबंधन करने के। उदाहरण के लिए:
public function do_something($optional_parameter = NULL) {
if (!empty($optional_parameter)) {
// do optional stuff with the contents of $optional_parameter
}
// do mandatory stuff
}
इस तरह भी एक सरल स्निपेट:
if (!isset($_REQUEST['form_var'])) {
// something's missing, do something about it.
}
मेरे लिए बहुत तार्किक लगता है। यह ब्लोट की तरह नहीं दिखता है, यह स्थिर कोड की तरह दिखता है। लेकिन बहुत सारे डेवलपर्स अपने अनुप्रयोगों को आग लगाने में E_NOTICE
सक्षम होते हैं, बहुत सारे निराशाजनक "अनइंस्टॉलिज्ड एरे इंडेक्स इंडेक्स" नोटिसों को खोजते हैं, और फिर परिभाषित चर के लिए जाँच करने की संभावना को देखते हुए और उनके कोड को "लैटरिंग" करते हैं isset()
।
मुझे लगता है कि अन्य भाषाएं चीजों को अलग तरीके से संभालती हैं। अनुभव से बोलते हुए, जावास्क्रिप्ट PHP के रूप में विनम्र नहीं है। एक अपरिभाषित चर आमतौर पर स्क्रिप्ट के निष्पादन को रोक देगा। इसके अलावा, ( अनुभवहीनता से बोलते हुए ) मुझे यकीन है कि सी / सी ++ जैसी भाषाएं बस संकलन के लिए मना कर देंगी।
तो, क्या PHP देवता केवल आलसी हैं? (आपके बारे में बात नहीं करते हुए, पाइका, मुझे पता है कि आप एक पुराने एप्लिकेशन को रिफैक्ट कर रहे थे।) या क्या अन्य भाषाएं अपरिभाषित चरों को प्रोग्रामर को पहले चेक करने की आवश्यकता से अधिक सुंदर ढंग से संभालती हैं, यदि वे परिभाषित हैं?
(मुझे पता है कि E_NOTICE
अपरिभाषित चर के अलावा अन्य संदेश भी हैं, लेकिन वे वही हैं जो सबसे अधिक तीर्थ का कारण बनते हैं)
परिशिष्ट
अब तक के उत्तरों से, मैं अकेला ऐसा नहीं हूं जो सोचता हूं कि isset()
कोड ब्लोट नहीं है। इसलिए, मैं अब सोच रहा हूं, क्या अन्य भाषाओं में प्रोग्रामर के साथ कोई समस्या है जो इसे एक प्रतिध्वनित करती है? या यह केवल एक PHP संस्कृति का मुद्दा है?