परिचय
PHP क्लास में, static कीवर्ड के साथ घोषित प्रॉपर्टीज और मेथड्स को इसके ऑब्जेक्ट द्वारा -> ऑपरेटर की सहायता से एक्सेस नहीं किया जा सकता। वास्तव में, क्लास के किसी भी इंस्टेंस को एक्सेस करने के लिए ऑब्जेक्ट की आवश्यकता नहीं होती। क्लास में स्टैटिक आइटम्स की डिफ़ॉल्ट विजिबिलिटी पब्लिक होती है।
स्टैटिक प्रॉपर्टीज़ (Static Properties)
क्लास के बाहर से स्टैटिक प्रॉपर्टी एक्सेस करने के लिए, हमें क्लास के नाम के साथ स्कोप रिज़ॉल्यूशन ऑपरेटर (::) का उपयोग करना होगा। क्लास के नाम का मूल्यांकन करने वाला स्ट्रिंग वेरिएबल भी स्टैटिक प्रॉपर्टी तक पहुँच प्रदान कर सकता है।
<?php
class testclass {
static $name = "test";
}
echo testclass::$name;
$var = "testclass";
echo $var::$name;
?>
किसी भी मेथड के अंदर उसी क्लास की स्टैटिक प्रॉपर्टी का उपयोग करने के लिए, -> ऑपरेटर के बजाय self कीवर्ड का उपयोग करें जिसका उपयोग इंस्टेंस प्रॉपर्टीज एक्सेस करने के लिए किया जाता है।
<?php
class testclass {
static $name = "test";
public function test() {
echo self::$name;
}
}
$obj = new testclass();
$obj->test();
?>
पैरेंट क्लास में घोषित किसी भी स्टैटिक प्रॉपर्टी को चाइल्ड क्लास मेथड के अंदर, स्कोप रिज़ॉल्यूशन ऑपरेटर के साथ parent कीवर्ड का उपयोग करके संदर्भित किया जा सकता है।
<?php
class testclass {
static $name = "test";
public function test() {
echo self::$name;
}
}
class myclass extends testclass {
public function mytest() {
echo parent::$name;
}
}
$obj = new myclass();
$obj->mytest();
?>
स्टैटिक मेथड्स (Static Methods)
जब किसी मेथड को स्टैटिक घोषित किया जाता है, तो स्यूडो-वेरिएबल $this इसके लिए उपलब्ध नहीं होता। इसलिए, क्लास के इंस्टेंस एट्रिब्यूट्स को इसमें एक्सेस नहीं किया जा सकता। स्टैटिक मेथड को क्लास के नाम के साथ स्कोप रिज़ॉल्यूशन ऑपरेटर द्वारा कॉल किया जाता है।
निम्न उदाहरण में, क्लास में एक स्टैटिक प्रॉपर्टी $count है जो हर बार कंस्ट्रक्टर निष्पादित होने पर बढ़ती है (यानी प्रत्येक ऑब्जेक्ट के लिए)। क्लास के अंदर, एक स्टैटिक फ़ंक्शन है जो स्टैटिक प्रॉपर्टी का मान प्राप्त करता है।
उदाहरण: ऑब्जेक्ट काउंट के लिए स्टैटिक प्रॉपर्टी और मेथड
<?php
class testclass {
static $count = 0;
function __construct() {
self::$count++;
}
static function showcount() {
echo "count = " . self::$count;
}
}
$a = new testclass();
$b = new testclass();
$c = new testclass();
testclass::showcount();
?>
आउटपुट
count = 3