2010-08-31 6 views
7

अगर मैं एक चर हो और पता नहीं यह सेट हो या मैंपीएचपी कोडिंग प्रथाओं

if (isset($a) && $a > 2) 

लिख सकते हैं या मैं

if (@ $a > 2) 

जो कम है लिख सकते हैं। दूसरा वाक्यविन्यास अच्छा है या नहीं?

+0

$ एक सेट है, तो और नहीं झूठी या – Andrew

+0

@Andrew है कि मैं क्या सोचा था लेकिन यह है कि कोई भी सशर्त के लिए भी सामान्य लगता नहीं के बराबर का उपयोग कर पसंद करते हैं। शायद उपयोग करने के लिए शायद बेहतर! = झूठी या यदि इसकी संख्या> 0 है या यदि इसकी स्ट्रिंग इसकी लंबाई> 0 या कुछ जांचती है। – Chris

+0

जो आप $ ए के लिए अनुमति देना चाहते हैं, उसके आधार पर ['खाली'] (http://de2.php.net/manual/en/function.empty.php) हो सकता है कि आप जो खोज रहे हैं वह हो सकता है। – Gordon

उत्तर

10

I totally sympathize, लेकिन @का उपयोग कर त्रुटि को दबाने खराब अभ्यास है।

त्रुटि अभी भी होती है, यह अभी दबाया जाता है। यह समय की सूक्ष्म मात्रा में खर्च करता है जो लूप में किए जाने पर बहुत कुछ जमा कर सकता है।

इसके अलावा, आप अपने लाभ के लिए "अपरिभाषित चर" नोटिस का उपयोग करने की संभावना को दूर करते हैं: टाइपो से बचने के लिए एक तंत्र के रूप में।

15

अभिव्यक्ति if(@$a) यह जांच नहीं करता है कि चर सेट है या नहीं। @ प्रतीक सिर्फ किसी भी चेतावनी को दबा देता है जो खराब कोडिंग शैली है।

2

फ़ंक्शन जारीकर्ता जांचता है कि कोई चर मौजूद है और यदि यह शून्य नहीं है। मुझे यकीन नहीं है कि आप & & $ ए के साथ क्या हासिल करना चाहते हैं।

@ ऑपरेटर अभिव्यक्ति द्वारा जेनरेट किए गए त्रुटि संदेशों को दबा देता है जिसे इसे पूर्ववत किया गया था।

3

पहला दृष्टिकोण सही दृष्टिकोण है। दूसरा दृष्टिकोण बहुत बुरा है। आप दबाने वाली त्रुटियों के साथ समाप्त हो जाएंगे और आप भी नहीं जानते। और एक दिन आपको त्रुटियों में फसल लग जाएगी कि आप उस खराब अभ्यास को डीबग करने में सक्षम नहीं होंगे।

2

लोगों की तरह पहले से ही कहा गया है, पहला संस्करण जाने का तरीका है। असल में मैं (/ * */& & $ var) संस्करण को नापसंद करता हूं यह जांचने के लिए कि वेरिएबल खाली है या नहीं। मैं

if (isset($var) && !empty($var)) { 
    /* foo */ 
} 

या सिर्फ

if (!empty($var)) { 
    /* foo */ 
} 
+0

है, हालांकि, अगर $ var '0' है, तो यह "खाली" नहीं है, लेकिन फिर भी 'खाली() 'से सत्य लौटाता है। यह आपको किसी बिंदु पर रंप में काट देगा। –

+0

वास्तव में नहीं, क्योंकि मुझे यह पता है ..:-) आप उस जारीकर्ता को जोड़ सकते हैं() एक चर को याद करता है यदि यह पूर्ण होने के लिए सेट है। तो अक्सर आपको चेक करने की आवश्यकता होती है जैसे: 'if ((isset ($ x) && खाली ($ x)) || is_null ($ x)) {/ * स्ट्रिंग करने के लिए संग्रहीत प्रक्रिया पैराम सेट करें" NULL "* /}' लेकिन सुनिश्चित करें: यदि आप शून्य शून्य की तलाश में हैं, तो आप खाली() का उपयोग नहीं करेंगे! –

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