2009-07-11 4 views
7

मैं सिर्फ इसक्या एक PHP फ़ंक्शन में एक साधारण 'वापसी' बस कार्य को समय-समय पर समाप्त करता है?

// Check to see if the request is a XHR call  
if (request::is_ajax()) 
{ 
    // Send the 403 header 
    header('HTTP/1.1 403 Forbidden'); 
    return; 
} 

मैं एक साधारण return से पहले नहीं देखा है देखा है, और मैं इसे इस्तेमाल नहीं किया है। मेरा एकमात्र अनुमान यह है कि यह वास्तव में किसी भी return 'something' (फ़ंक्शन को रोकना) जैसा ही कार्य करता है, सिवाय इसके कि परिणाम वास्तव में परिणाम नहीं देता है।

इसके अलावा, इस स्थिति में क्या होगा?

function text($var) 
{ 
    if (! $var) { 
     return; 
    } 
    do_something(); 
} 

$var = text(''); 

मैं जानता हूँ कि यह एक बुरा उदाहरण है (यह शायद झूठी वापसी या एक अपवाद फेंक देना चाहिए), लेकिन यह एक त्रुटि हो सकता है, या $var बस नल या खाली हो सकता है?

+0

मुझे लगता है कि आपका मतलब एक्सएचआर था, एचएक्सआर नहीं :) –

+0

@ गैब - यह नेट पर पाया गया एक उदाहरण था। – alex

उत्तर

10
function text($var) 

{ 

    if (! $var) { 
     return; 
    } 
    do_something(); 

} 

$var = text(''); 

echo gettype($var); 
echo is_bool($var) ? "true" : "false"; 
echo is_string($var) ? "true" : "false"; 
echo is_null($var) ? "true" : "false"; 

रिटर्न:

शून्य झूठी झूठी सच

2

संक्षिप्त उत्तर। यह सिर्फ फ़ंक्शन को समाप्त करता है, यह बिना किसी वापसी कथन वाले फ़ंक्शन की तरह है। कुछ भी वापस नहीं किया गया है, समारोह अभी बाहर निकला है।

आपके दूसरे उदाहरण में, $ var = कुछ भी नहीं होगा।

क्यों इसे निष्पादित नहीं करते और देखते हैं?

+0

मैं समुदाय से कुछ प्रतिक्रिया प्राप्त करना चाहता था और उम्मीद है कि कुछ सलाह। आपके उत्तर के लिए धन्यवाद। – alex

7

पीएचपी गतिशील रूप से लिखा गया है, तो कोई मूल्य नहीं लौटने किसी भी प्रकार में एक शून्य मान लौटने के बराबर है।

4

कोई मूल्य वापसी के बिना वापसी शून्य। मैनुअल से

अधिक जानकारी:

तो एक समारोह के भीतर से कहा जाता है, वापसी() बयान तुरंत वर्तमान समारोह के निष्पादन समाप्त होता है, और समारोह कॉल के महत्व के रूप में अपनी तर्क देता है। वापसी() एक eval() कथन या स्क्रिप्ट फ़ाइल के निष्पादन को भी समाप्त कर देगा।

यदि वैश्विक दायरे से कहा जाता है, तो वर्तमान स्क्रिप्ट फ़ाइल का निष्पादन समाप्त हो गया है। यदि वर्तमान स्क्रिप्ट फ़ाइल में() एड या आवश्यकता() एड शामिल था, तो नियंत्रण कॉलिंग फ़ाइल पर वापस भेज दिया गया है। इसके अलावा, यदि वर्तमान स्क्रिप्ट फ़ाइल में() एड शामिल था, तो वापसी() को दिया गया मान शामिल() कॉल के मान के रूप में वापस कर दिया जाएगा। यदि वापसी() को मुख्य स्क्रिप्ट फ़ाइल के भीतर से कॉल किया जाता है, तो स्क्रिप्ट निष्पादन समाप्त होता है। यदि वर्तमान स्क्रिप्ट फ़ाइल का नाम auto_prepend_file या auto_append_file कॉन्फ़िगरेशन विकल्पों द्वारा php.ini में रखा गया था, तो उस स्क्रिप्ट फ़ाइल का निष्पादन समाप्त हो गया है।

2

हां, "return;" या वापसी(); फ़ंक्शन में उस फ़ंक्शन को चलाने से रोकता है (या फ़ाइल अगर रिटर्न स्टेटमेंट फ़ंक्शन में नहीं है) उस बिंदु पर (यदि कोड निष्पादित किया गया है) और तकनीकी रूप से शून्य मान देता है।

आपका पहला उदाहरण 'HTTP/1.1 403 निषिद्ध' शीर्षलेख आउटपुट करेगा और फिर अनुरोध अगर is_ajax() सत्य के बराबर है तो उस कार्य को समाप्त कर देगा।

अपने कोड उदाहरण में:

function text($var) 
{ 

    if (! $var) { 
     return; 
    } 
    do_something(); 

} 
$var = text(''); 

आप बाहर निम्नलिखित हो सकता है आता है:

  • हैं $ वर सही नहीं है (यानी झूठे, अशक्त, पाठ या एक पूर्णांक), तो बाहर निकलने के समारोह और वापसी शून्य।
  • यदि $ var वास्तव में सत्य है (यदि स्टेटमेंट जांच रहा है कि $ var कुछ भी सत्य है तो), तो do_something() चलाएं;

मैं आपको संदेह होता शायद अगर बदलना चाहते बयान के लिए या तो:

if (!is_string($var)) { 

अगर आप सिर्फ() एक स्ट्रिंग के लिए do_something करना चाहते हैं या

if (is_null($var)) { 

यदि आप केवल चाहते हैं अगर यह सेट किया गया है तो $ var से कुछ करने के लिए। आप अपनी फ़ंक्शन घोषणा को भी बदलना चाहेंगे: फ़ंक्शन टेक्स्ट ($ var == NULL) { ताकि यदि आप बिना किसी पैरामीटर के टेक्स्ट को कॉल करते हैं, तो $ var स्वचालित रूप से शून्य पर सेट हो जाता है।

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