परिचय
एक PHP वर्ग में, स्थैतिक कीवर्ड के साथ घोषित गुणों और विधियों को इसके ऑब्जेक्ट द्वारा -> ऑपरेटर की सहायता से एक्सेस नहीं किया जा सकता है। वास्तव में, कक्षा के किसी भी उदाहरण तक पहुँचने के लिए वस्तु की आवश्यकता नहीं होती है। कक्षा में स्थिर वस्तुओं की डिफ़ॉल्ट दृश्यता सार्वजनिक होती है
स्थिर गुण
बाहरी वर्ग से एक स्थिर संपत्ति तक पहुँचने के लिए, हमें वर्ग के नाम के साथ स्कोप रिज़ॉल्यूशन ऑपरेटर (::) का उपयोग करने की आवश्यकता है। वर्ग के नाम का मूल्यांकन करने वाला एक स्ट्रिंग चर स्थिर संपत्ति को भी प्रदान कर सकता है
<?php class testclass{ static $name="test"; } echo testclass::$name; $var="testclass"; echo $var::$name; ?>
एक ही वर्ग की किसी भी विधि के अंदर स्थिर गुण का उपयोग करने के लिए, स्वयं . का उपयोग करें इसके बजाय कीवर्ड -> ऑपरेटर जिसका उपयोग इंस्टेंस गुणों तक पहुँचने के लिए किया जाता है।
<?php class testclass{ static $name="test"; public function test(){ echo self::$name; } } $obj=new testclass(); $obj->test(); ?>
माता-पिता वर्ग में घोषित किसी भी स्थिर संपत्ति को पैरेंट . का उपयोग करके चाइल्ड क्लास विधि के अंदर संदर्भित किया जा सकता है स्कोप रिजॉल्यूशन ऑपरेटर के साथ कीवर्ड
<?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(); ?>
स्थिर तरीके
जब किसी विधि को स्थिर घोषित किया जाता है, तो छद्म चर $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