2012-07-13 22 views
14

से "त्रुटि" लौटने के लिए सर्वश्रेष्ठ अभ्यास मैं एक समारोह है? इस फ़ंक्शन में, यदि कोई पंक्तियां वापस नहीं आती हैं, तो इसका अर्थ यह नहीं है कि प्रति "त्रुटि" है, इसका मतलब यह है कि मान की गणना नहीं की जा सकती है। जब मैं किसी फ़ंक्शन के परिणाम की जांच करता हूं, तो मुझे लगता है कि अगर मैं इसे फ़ंक्शन में प्रदर्शित करने से पहले डेटा वापस लौटा रहा हूं तो जांचने का एक बेहतर तरीका है। ऐसा करने का सबसे अच्छा तरीका क्या है? मैं एक "झूठा" वापस करना चाहता हूं, लेकिन फ़ंक्शन को कॉल करते समय मैं इसकी जांच कैसे करूं? धन्यवाद!एक समारोह

+1

==> अपवाद। –

+1

अच्छी तरह से, यह वास्तव में एक त्रुटि नहीं है (यदि यह एक त्रुटि है जहां आप 'नई अपवाद फेंकने' का उपयोग करेंगे ('इस रेटिंग में कोई त्रुटि है।'); 'बस' शून्य 'या' झूठी 'वापस लौटें और एप्लिकेशन को इसे संभालने दें तदनुसार – Hannes

+2

@ हेंस - मैं सहमत हूं। यहां कोई त्रुटि नहीं है। अपवाद बिट उपयोगी है, लेकिन यहां नहीं। अगर दबाया जाता है, तो मैं कहूंगा कि 'शून्य' वापसी मूल्य सबसे उपयुक्त है। – thetaiko

उत्तर

6

वहाँ (मेरी राय में) कर रहे हैं 2 सामान्य तरीके:

  1. रिटर्निंगfalse
    कई अंतर्निहित पीएचपी कार्यों ऐसा करें

  2. का उपयोग SPL exceptions
    विकसित किया गया पीएचपी चौखटे (Symfony2, ZF2, ...) है कि

+0

की प्रतिलिपि बनाई गई मैंने आपकी सलाह ली और अब केवल 'झूठी' वापस लौटें। यह सबसे अच्छा काम करता प्रतीत होता है। धन्यवाद! – Jeff

0

मैं exceptions का उपयोग करूंगा - भ्रम पर बचाता है।

0

त्रुटियों से निपटने का सबसे अच्छा तरीका अपवाद फेंकना है। इस तरह आप सभी प्रकार की विभिन्न त्रुटियों को प्राप्त कर सकते हैं और तदनुसार उन्हें संभाल सकते हैं।

आप कर सकते हैं तो बस कार्य करें:

try { 
    $myvar = CustomerRating(); 
    //do something with it 
} catch (Exception $e) { 
    echo $e->getMessage(); 
} 
3

उपयोग अपवाद नहीं। कार्यों से त्रुटियों और तरीकों

2

आप exceptions जरूरत लौटने से बचें:

public function CustomerRating() { 
    $result = $db->query("..."); 
    $row = $result->fetch_assoc(); 
    if ($row !== null) { 
      return $row['somefield']; 
    } else { 
      throw new Exception('There is an error with this rating.'); 
    } 
} 

// Somewhere on another page... 
try { 
    echo $class->CustomerRating(); 
} catch (Exception $e) { 
    echo $e->getMessage(); 
} 
+0

लगभग सही, ऐसा करने का उचित तरीका 'if (! $ पंक्ति) फेंक देगा ...' अन्यथा 'फ़ंक्शन के अंत में' वापसी 'होगा। और आप एक उद्घाटन '{' खो रहे हैं। – netcoder

+0

हां, –

0

इस आजमाएं:

public function CustomerRating() { 
    $result = $db->query("..."); 
    $row = $result->fetch_assoc(); 

    if($row){ 
     $output = $row['somefield']; 
    } else { 
     $output = false; 
    } 

    return $output; 
} 

//somewhere on another page... 
if($class->CustomerRating() !== false) { 
    echo $class->CustomerRating(); 
} else { 
    echo "There is an error with this rating."; 
} 

यह यकीन है कि यह अगर नहीं तोड़ देगा आप शून्य लौटाते हैं।

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