Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> PHP

PHP declare स्टेटमेंट: ticks, strict_types और encoding


परिचय

PHP में declare स्टेटमेंट का सिंटैक्स while, for, foreach आदि जैसे अन्य फ्लो कंट्रोल संरचनाओं के समान है।

सिंटैक्स

declare (directive) {
    statement1;
    statement2;
    ...
}

ब्लॉक का व्यवहार डायरेक्टिव के प्रकार द्वारा परिभाषित होता है। declare स्टेटमेंट में तीन प्रकार के डायरेक्टिव्स प्रदान किए जा सकते हैं - ticks, encoding और strict_types डायरेक्टिव।

1. ticks डायरेक्टिव

एक टिक एक विशेष घटना का नाम है जो स्क्रिप्ट में निश्चित संख्या में स्टेटमेंट्स निष्पादित होने पर होता है। ये स्टेटमेंट्स PHP के आंतरिक हैं और मोटे तौर पर आपके स्क्रिप्ट में स्टेटमेंट्स के बराबर हैं (कंडीशनल और आर्गुमेंट एक्सप्रेशन्स को छोड़कर)। किसी भी फंक्शन को register_tick_function द्वारा टिक इवेंट के साथ जोड़ा जा सकता है। रजिस्टर्ड फंक्शन declare डायरेक्टिव में निर्दिष्ट टिक्स की संख्या के बाद निष्पादित होगा।

उदाहरण

<?php
function myfunction() {
    echo "Hello World\n";
}

register_tick_function("myfunction");
declare (ticks=5) {
    for ($i = 1; $i <= 10; $i++) {
        echo $i . "\n";
    }
}
?>

आउटपुट (कमांड लाइन से चलाने पर)

1
2
3
4
5
Hello World
6
7
8
9
10
Hello World

PHP में unregister_tick_function() भी है जो किसी फंक्शन का टिक इवेंट के साथ एसोसिएशन हटाता है।

2. strict_types डायरेक्टिव

PHP एक कमजोर टाइप वाली भाषा है, जो किसी निश्चित ऑपरेशन को करने के लिए डेटा टाइप को उपयुक्त रूप से कन्वर्ट करने का प्रयास करती है। यदि दो इंटीजर आर्गुमेंट्स वाला फंक्शन है जो उनका जोड़ लौटाता है, और इसे कॉल करते समय कोई आर्गुमेंट फ्लोट के रूप में दिया जाता है, तो PHP पार्सर ऑटोमैटिकली फ्लोट को इंटीजर में कन्वर्ट कर देगा। यदि यह जबरन कन्वर्जन (coercion) वांछित नहीं है, तो हम declare कंस्ट्रक्ट में strict_types=1 निर्दिष्ट कर सकते हैं।

उदाहरण: strict_types के बिना (डिफ़ॉल्ट)

<?php
// strict_types डिफ़ॉल्ट रूप से 0 है
function myfunction(int $x, int $y) {
    return $x + $y;
}
echo "total=" . myfunction(1.99, 2.99);
?>

आउटपुट

total=3

फ्लोट पैरामीटर्स को जोड़ करने के लिए इंटीजर में जबरन कन्वर्ट किया जाता है।

उदाहरण: strict_types=1 के साथ

<?php
declare (strict_types=1);
function myfunction(int $x, int $y) {
    return $x + $y;
}
echo "total=" . myfunction(1.99, 2.99);
?>

आउटपुट

Fatal error: Uncaught TypeError: Argument 1 passed to myfunction() must be of the type integer, float given

महत्वपूर्ण नोट

  • declare(strict_types=1) फाइल के शीर्ष पर होना चाहिए (नेमस्पेस से पहले)।
  • यह केवल उस फाइल को प्रभावित करता है जिसमें यह घोषित है (इंक्लूडेड फाइल्स को नहीं)।
  • यह स्केलर टाइप डिक्लेरेशन्स (int, float, string, bool) पर लागू होता है।
  • रिटर्न टाइप डिक्लेरेशन्स पर भी लागू होता है।

3. Encoding डायरेक्टिव

declare कंस्ट्रक्ट में Encoding डायरेक्टिव होता है जिसके साथ स्क्रिप्ट की एन्कोडिंग स्कीम निर्दिष्ट करना संभव है।

उदाहरण

<?php
declare(encoding='ISO-8859-1');
echo "This Script uses ISO-8859-1 encoding scheme";
?>

सारांश

डायरेक्टिवउद्देश्यस्कोप
ticks=Nहर N स्टेटमेंट्स पर फंक्शन कॉलफाइल-स्तरीय
strict_types=1सख्त टाइप चेकिंग सक्षमफाइल-स्तरीय
encoding='...'स्क्रिप्ट एन्कोडिंग निर्दिष्टफाइल-स्तरीय
  1. - PHP break स्टेटमेंट: लूप और स्विच से बाहर निकलना

    परिचय break स्टेटमेंट PHP में लूपिंग कंट्रोल कीवर्ड्स में से एक है। जब प्रोग्राम फ्लो while, do-while, for, foreach लूप या switch कंस्ट्रक्ट के अंदर break से मिलता है, तो लूप/स्विच के शेष स्टेटमेंट्स छोड़ दिए जाते हैं और उसी के बाद के स्टेटमेंट्स निष्पादित होते हैं। सिंटैक्स while (expr) { ...

  1. - PHP If Statement में HTML Embed करना

    PHP में conditional logic के आधार पर HTML output को control करने के कई साफ़ तरीके हैं। विधि 1: Alternative Syntax (टेम्पलेट्स के लिए सर्वश्रेष्ठ) name) ?>!</h2> <a href=/dashboard>डैशबोर्ड</a> </div> <?php else: ?> <div class=login-prompt>

  1. - PHP में ग्लोबल वेरिएबल कैसे घोषित करें

    PHP में ग्लोबल वेरिएबल एक **ग्लोबल वेरिएबल** प्रोग्राम के किसी भी भाग में एक्सेस की जा सकती है। हालांकि, इसे **संशोधित** करने के लिए, उस फ़ंक्शन में स्पष्ट रूप से global कीवर्ड का उपयोग करके ग्लोबल घोषित किया जाना चाहिए जिसमें इसे संशोधित किया जाना है। उदाहरण 1: बेसिक ग्लोबल वेरिएबल <?php $val