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

PHP क्लास कॉन्स्टेंट्स: परिभाषा, एक्सेस और विजिबिलिटी


परिचय

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

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

सिंटैक्स

class SomeClass {
    const CONSTANT = 'constant value';
}
echo SomeClass::CONSTANT;

कॉन्स्टेंट नाम केस-सेंसिटिव होते हैं। परंपरा के अनुसार, कॉन्स्टेंट का नाम अपरकेस में दिया जाता है।

उदाहरण 1: बेसिक क्लास कॉन्स्टेंट

<?php
class square {
    const PI = M_PI;
    var $side = 5;
    function area() {
        $area = $this->side ** 2 * self::PI;
        return $area;
    }
}

$s1 = new square();
echo "PI=" . square::PI . "\n";
echo "area=" . $s1->area();
?>

आउटपुट

PI=3.1415926535898
area=78.539816339745

उदाहरण 2: एक्सप्रेशन के रूप में क्लास कॉन्स्टेंट

इस उदाहरण में, क्लास कॉन्स्टेंट को एक एक्सप्रेशन असाइन किया गया है:

<?php
const X = 22;
const Y = 7;

class square {
    const PI = X / Y;
    var $side = 5;
    function area() {
        $area = $this->side ** 2 * self::PI;
        return $area;
    }
}

$s1 = new square();
echo "PI=" . square::PI . "\n";
echo "area=" . $s1->area();
?>

आउटपुट

PI=3.1428571428571
area=78.571428571429

उदाहरण 3: कॉन्स्टेंट विजिबिलिटी मॉडिफायर्स (PHP 7.1+)

<?php
class example {
    const X = 10;
    private const Y = 20;
}

$s1 = new example();
echo "public=" . example::X . "\n";
// echo "private=" . $s1->Y . "\n"; // त्रुटि: प्रॉपर्टी एक्सेस
// echo "private=" . example::Y . "\n"; // त्रुटि: प्राइवेट कॉन्स्टेंट एक्सेस नहीं कर सकते
?>

आउटपुट

public=10
PHP Notice: Undefined property: example::$Y
PHP Fatal error: Uncaught Error: Cannot access private const example::Y

मुख्य बिंदु

  • कॉन्स्टेंट्स का मान कंपाइल टाइम पर ज्ञात होना चाहिए (PHP 8.1+ में कुछ एक्सप्रेशन्स अनुमत हैं)।
  • कॉन्स्टेंट्स पर $ सिंबल नहीं होता।
  • क्लास के बाहर: ClassName::CONSTANT
  • क्लास के अंदर: self::CONSTANT या static::CONSTANT (लेट स्टेटिक बाइंडिंग के लिए)।
  • PHP 7.1+ में visibility modifiers (public, protected, private) समर्थित हैं।
  • इंटरफेस में भी कॉन्स्टेंट्स परिभाषित किए जा सकते हैं।
  1. - PHP में FILTER_CALLBACK कॉन्स्टेंट

    विवरण FILTER_CALLBACK कॉन्स्टेंट वैल्यू को फिल्टर करने के लिए यूजर-डिफाइन्ड फंक्शन को कॉल करता है। रिटर्न वैल्यू FILTER_CALLBACK कॉन्स्टेंट कुछ भी रिटर्न नहीं करता। उदाहरण निम्न उदाहरण स्ट्रिंग के केस को कन्वर्ट करता है। यहां PHP में मौजूद फंक्शन लिया गया है: strtolower)); ?> आउटपुट निम्न आउट

  1. - PHP में FILTER_SANITIZE_NUMBER_INT कॉन्स्टेंट

    विवरण FILTER_SANITIZE_NUMBER_INT कॉन्स्टेंट नंबर से सभी अवैध कैरेक्टर्स डिलीट करता है। रिटर्न वैल्यू FILTER_SANITIZE_NUMBER_INT कॉन्स्टेंट कुछ भी रिटर्न नहीं करता। उदाहरण <?php $var = 4-5+9p; var_dump(filter_var($var, FILTER_SANITIZE_NUMBER_INT)); ?> आउटपुट निम्न आउटपुट है: string(5) 4-5+9

  1. - PHP में FILTER_VALIDATE_FLOAT कॉन्स्टेंट

    विवरण FILTER_VALIDATE_FLOAT कॉन्स्टेंट वैल्यू को फ्लोट नंबर के रूप में वैलिडेट करता है। रिटर्न वैल्यू FILTER_VALIDATE_FLOAT कॉन्स्टेंट कुछ भी रिटर्न नहीं करता। उदाहरण <?php $var = 291.9; var_dump(filter_var($var, FILTER_VALIDATE_FLOAT)); ?> आउटपुट निम्न आउटपुट है: float(291.9)