2012-06-24 28 views
5

संभव डुप्लिकेट:
php false place in conditionआदेश

मैं देखा है कि PHP कोड का एक बहुत CONST == VARIABLE तरह सशर्त बयान का उपयोग करता है। मैं हमेशा विपरीत में व्यक्त वाक्यविन्यास के साथ बड़ा हुआ। क्या इस ढांचे का कोई कारण है?

उदाहरण:

// this is the way I see it most typically represented in PHP 
if (false == $foobar) { // do this } 

// this is the way I normally do it 
if ($foobar == false) { // do this } 
+2

इसे अक्सर "योड स्थिति" कहा जाता है। कुछ लोग समानता के स्थान पर असाइनमेंट टाइपो को रोकने के लिए इसका इस्तेमाल करते हैं। मेरी राय है कि उनके खिलाफ सुरक्षा के लिए एक अजीब कोडिंग सम्मेलन की बजाय टाइपो पेश करना न हो। –

+0

यह बेहतर है: अगर (! $ Foobar) {// यह} –

+0

लेकिन दोनों के समान परिणाम –

उत्तर

8

यह == और = के बीच एक सामान्य टाइपो को रोकने के लिए है, जिसे योड स्थिति कहा जाता है। निम्नलिखित पर विचार करें:

if(false = $foobar) { 

यह एक त्रुटि में परिणाम होगा, को पकड़ने के बाद से आप false के लिए कुछ भी नहीं सौंप सकते क्या, एक बग पर विचार किया जाएगा। इसके विपरीत:

if($foobar = false) { 

यह वैध वाक्यविन्यास है, और इसे बनाने में काफी आसान गलती है।

हालांकि, मैं आमतौर पर if($foobar == false) वाक्यविन्यास पसंद करता हूं, क्योंकि यूनिट परीक्षण इन प्रोग्रामेटिक गलतियों को पकड़ने में सक्षम होना चाहिए।

+0

मुझे आश्चर्य है कि क्यों कोई स्पष्ट रूप से '$ foobar == false' का परीक्षण करना चाहेगा, जब सरल'! $ foobar' पर्याप्त होना चाहिए था।) बेशक, '$ foobar === झूठी' पूरी तरह से एक और कहानी है।) – raina77ow

+0

@ raina77ow PHP और कुछ अन्य गतिशील रूप से टाइप किए गए लैंग्स में, बूलियन 'FALSE' "झूठीपन" से एक अलग विशिष्ट चीज़ है। '$ Var =" "'; पर विचार करें। '! $ var' सच है, लेकिन कभी-कभी आपको यह सत्यापित करने की आवश्यकता होती है कि यह वास्तव में बूलियन 'गलत' है। –

+0

PHP के साथ, यह उन कार्यों के लिए सहायता करता है जो '0' और' false 'दोनों को वापस करते हैं, उदा। 'Strpos()'। तो, '$ foobar = strpos ($ haystack, $ सुई);' त्रुटि पर '0', या' false' का वैध वापसी मान हो सकता है। – nickb

1

जिस तरह से आप सामान्य रूप से यह वास्तव में कैसे सबसे प्रोग्रामर यह करना है। पहला उदाहरण एक योदा हालत कहा जाता है:

http://www.dodgycoder.net/2011/11/yoda-conditions-pokemon-exception.html

और आदर्श नहीं है।