payment by upi: sinhamit@icici or payment by bank account name: amit kumar sinha, account number: 2646728782 IFSC code: KKBK0005660 SWIFT: KKBKINBB

Please support if you like my work by payment through upi: sinhamit@icici or payment by bank

account name: Amit Kumar Sinha,
account number: 2646728782
IFSC code: KKBK0005660
SWIFT: KKBKINBB


Conditional Functions & Variable Functions   in Category: पीएचपीलेवल2   by amit

🕙 Posted on 2023-06-13 at 17:31:20


शॉर्ट-सर्किटिंग और फ़ंक्शंस

    शॉर्ट सर्किटिंग (short circuiting) का अर्थ है वह तकनीक जिसका उपयोग कई प्रोग्रामिंग भाषाओं द्वारा किया जाता है, जो कंडीशनल ऑपरेशंस (या बूलियन लॉजिक) का मूल्यांकन कंप्यूटिंग शक्ति को बचाने के लिए किया जाता है। इस प्रकार, शॉर्ट-सर्किटिंग बूलियन लॉजिक या तुलना (comparison) ऑपरेंड के अनावश्यक भागों को छोड़ देता है। सशर्त अभिव्यक्तियों (condi­tional expressions) का मूल्यांकन आम तौर पर बाएं से दाएं किया जाता है: जब पहला ऑपरेंड का मान, परिणाम के सत्य/असत्य (true/false) चरित्र का फैसला करता है, तो PHP दूसरे ऑपरेंड का मूल्यांकन नहीं करेगा।

<?php var_dump( 4<3 && 5<6 ); ?><!-- ! (नहीं) को छोड़कर, तुलना (comparison) संचालकों (operators) की अन्य सभी तार्किक (logical) संचालकों पर (की तुलना में) उच्च प्राथमिकता है। जब पहले ऑपरेंड की and तुलना (comparison) में false का मूल्यांकन किया जाता है, तो दूसरे ऑपरेंड का मूल्यांकन नहीं किया जाएगा। --><br />

<?php var_dump( true || false ); ?><!-- जब पहले ऑपरेंड का मूल्यांकन or तुलना में true होता है, तो दूसरे ऑपरेंड का मूल्यांकन नहीं किया जाएगा। --><br />

<?php $my_var = true and false; var_dump( $my_var ); ?><!-- असाइनमेंट ऑपरेटर की and xor or ऑपरेटरों पर उच्च प्राथमिकता है। अत: चर $my_var के साथ true सौंपा (निर्दिष्ट किया) गया है और शेष ऑपरेंड को छोड़ दिया जाता है। --><br />

<?php var_dump( false && false || !false ); ?><!-- ! (नहीं) ऑपरेटर की उच्च प्राथमिकता है, इसका मूल्यांकन पहले किया जाता है। तब, (false && false) का मूल्यांकन false के रूप में किया जाएगा। अंत में, (false || true) का मूल्यांकन किया जाएगा। आउटपुट bool(true) है --><br />

<?php var_dump( false && (false || !false) ); ?><!-- जब दो ऑपरेंड को लपेटने के लिए कोष्ठक का उपयोग किया जाता है, तो उनका मूल्यांकन पहले किया जाएगा। इसलिए, (false || true) पहले मूल्यांकन किया जाएगा, और फिर (false && true) मूल्यांकन किया जाएगा। आउटपुट bool(false) है --><br />

    यदि आप उपरोक्त संक्रियाओं (operations) को प्रमाण के रूप में देखना चाहते हैं, तो आप परिणाम देखने के लिए निम्नलिखित उदाहरणों का उपयोग कर सकते हैं। एक साधारण कस्टम फ़ंक्शन को परिभाषित किया जाएगा, और इसे उन ऑपरेंडों पर रखा जाएगा जिनका मूल्यांकन बाद में किया जाएगा। निम्नलिखित दो उदाहरणों में से प्रत्येक आपको दिखाता है कि फ़ंक्शन को कॉल नहीं किया जाएगा, क्योंकि शॉर्ट-सर्किटिंग तकनीक का उपयोग करने के बाद इसका मूल्यांकन नहीं किया होगा।

<?php function new_function() { echo 'Hello<br />'; return false; } ?><!-- जब दूसरे ऑपरेंड का मूल्यांकन नहीं किया जाता है, तो यह फ़ंक्शन कॉल नहीं किया जाएगा। -->

<?php var_dump( false && new_function() ); // आउटपुट bool(false) है ?><br />

<?php var_dump( true || new_function() ); // आउटपुट bool(true) है ?><br />

    हालाँकि, जब पहले ऑपरेंड का मूल्यांकन तुलना संचालन comparison operations (या बूलियन लॉजिक) में परिणाम तय नहीं करता है, तो दूसरे ऑपरेंड का मूल्यांकन किया जाएगा और आप new_function() फ़ंक्शन से आउटपुट देखेंगे, और वापसी (returned) मूल्य के साथ मूल्यांकन किया जाता (evaluated) है।

<?php var_dump( true && new_function() ); // आउटपुट Hello<br />bool(false) है ?><br />

<?php var_dump( false || new_function() ); // आउटपुट Hello<br />bool(false) है ?><br />

सशर्त (condi­tional) फ़ंक्शंस

    फ़ंक्शंस को संदर्भित (invoke) करने से पहले उन्हें परिभाषित करने की आवश्यकता नहीं है, सिवाय इसके कि जब कोई फ़ंक्शन सशर्त रूप से (condit­ionally) परिभाषित हो। जब किसी फ़ंक्शन को सशर्त तरीके से परिभाषित किया जाता है, तो इसकी परिभाषा को बुलाए जाने से (called) पहले संसाधित किया जाना चाहिए। हालांकि सभी फ़ंक्शंस global दायरे में होते हैं, लेकिन किसी भी सशर्त फ़ंक्शन को पहले परिभाषित किया जाता है। आइए सशर्त फ़ंक्शन का एक उदाहरण देखें:

<?php
  if( true ) {
    /* यदि उपरोक्त शर्त (cond­ition) गलत है, तो आपको घातक त्रुटि मिलती है
    Fatal error: Uncaught ERROR: Call to Undefined function mno() */


    function mno() {
      return 'Hello';
    }
  }
  var_dump( mno() ); // आउटपुट string(5) "Hello" है
?>

    PHP interpreter को "आलसी" भी कहा जाता है, जिसका अर्थ है कि यह शर्तों आदि का मूल्यांकन करने के लिए यथा-संभव न्यूनतम संख्या में तुलना करेगा। यह एक प्रमाण है कि PHP व्यवहार सुसंगत (consistent) है। जब PHP interpreter देखता है कि जब किसी (अंतर्निहित या कस्टम) फ़ंक्शन नाम का आह्वान किया गया है, तो यह पहले सभी कोडों को ऊपर से नीचे तक संसाधित करता है। लेकिन, जब यह सशर्त अभिव्यक्ति या सशर्त ब्लॉक देखता है, तो यह "आलसी" बन जाता है।

चर (variable) फ़ंक्शंस

    PHP चर फ़ंक्शंस की अवधारणा का समर्थन करता है। इसका मतलब यह है कि यदि एक चर नाम के साथ कोष्ठक संलग्न हैं, तो PHP उसी नाम के साथ एक फ़ंक्शन की तलाश करेगा, जो भी चर का मूल्यांकन करता है, और इसे निष्पादित करने का प्रयास करेगा। अन्य बातों के अलावा, इसका उपयोग कॉलबैक, फ़ंक्शन टेबल, आदि को लागू करने के लिए किया जा सकता है।

    चर (variable) फ़ंक्शंस भाषा संरचनाओं (language constructs) जैसे echo, print, unset(), isset(), empty(), include, require, आदि के साथ काम नहीं करेंगे। इनमें से किसी भी संरचना (construct) को चर फ़ंक्शंस के रूप में उपयोग करने के लिए आवरण (wrapper) फ़ंक्शंस का उपयोग करें। आइए चर फ़ंक्शंस का एक उदाहरण देखें:

<?php
  function xyz() {
    return 'Hello<br />';
  }
  $abc = 'xyz';
  echo $abc();     // आउटपुट Hello<br /> है
?>

    उपरोक्त उदाहरण एक साधारण चर फ़ंक्शन है। हालाँकि, () कोष्ठक के भीतर, पैरामीटर और तर्क (argu­ments) पारित किए जा सकते हैं, और फिर वांछित परिणाम प्राप्त किए जा सकते हैं। अन्य प्रकार के फ़ंक्शंस हैं: अनाम (anonymous), तीर (arrow), विविध (variadic), आदि। आप अगले पृष्ठ में फ़ंक्शंस, पैरामीटर, तर्कों (argu­ments) आदि के बारे में अधिक जानेंगे।


Leave a Comment: