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

पीएचपी लेट स्टेटिक बाइंडिंग

परिचय

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

उदाहरण

निम्नलिखित कोड में, अभिभावक वर्ग स्वयं ::उपसर्ग के साथ स्थिर लोकाचार कहता है। चाइल्ड क्लास के साथ कॉल करने पर वही तरीका चाइल्ड क्लास के नाम को संदर्भित नहीं करता है क्योंकि यह हल नहीं होता है

उदाहरण

<?php
class test1{
   public static $name="Raja";
   public static function name(){
      echo "name of class :" . __CLASS__;
   }
   public static function getname(){
      self::name();
   }
}
class test2 extends test1{
   public static function name(){
      echo "name of class :" . __CLASS__;
   }
}
test2::getname();
?>

आउटपुट

परिणाम से पता चलता है कि उम्मीद के विपरीत, मूल वर्ग का नाम वापस कर दिया गया है

name of class :test1

स्वयं के बजाय स्थिर ::का उपयोग करना ::रनटाइम पर देर से बाध्यकारी बनाता है

उदाहरण

<?php
class test1{
   public static function name(){
      echo "name of class :" . __CLASS__;
   }
   public static function getname(){
      static::name();
   }
}
class test2 extends test1{
   public static function name(){
      echo "name of class :" . __CLASS__;
   }
}
test2::getname();
?>

उपरोक्त कोड अब उम्मीद के मुताबिक चाइल्ड क्लास का नाम देता है

आउटपुट

name of class :test2

स्थैतिक का उपयोग करना::गैर-स्थिर संदर्भ में

माता-पिता में निजी विधि को बच्चे में कॉपी किया जाता है, इसलिए इसका दायरा अभी भी माता-पिता होगा

उदाहरण

<?php
class test1{
   private function name(){
      echo "name of class :" . __CLASS__ ."\n";
   }
   public function getname(){
      $this->name();
      static::name();
   }
}
class test2 extends test1{
   //
}
$t2=new test2();
$t2->getname();
?>

आउटपुट

आउटपुट निम्न परिणाम दिखाता है

name of class :test1
name of class :test1

हालांकि, जब पैरेंट मेथड को ओवरराइड किया जाता है, तो इसका दायरा बदल जाता है

उदाहरण

class test3 extends test1{
   private function name() {
      /* original method is replaced; the scope of name is test3 */
   }
}
$t3 = new test3();
$t3->name();

आउटपुट

आउटपुट निम्न अपवाद दिखाता है

PHP Fatal error: Uncaught Error: Call to private method test3::name() from context ''

  1. PHP में अंतिम कीवर्ड

    अंतिम कीवर्ड PHP में विधियों और कक्षाओं के लिए उपयोग किया जाता है। विधियों के लिए अंतिम विधि को ओवरराइड करने से रोकता है, जबकि अंतिम वाली कक्षाओं के लिए वंशानुक्रम को रोकता है। उदाहरण PHP में अंतिम कीवर्ड के साथ काम करने के लिए, कोड इस प्रकार है। यहाँ, हमारे पास अंतिम विधि है- <?php    

  1. PHP में इंटरफेस को समझाइए।

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

  1. PHP में एब्स्ट्रैक्ट क्लास को समझाइए।

    PHP5 इसके साथ ऑब्जेक्ट-ओरिएंटेड मॉडल के साथ आता है, ऑब्जेक्ट-ओरिएंटेड मॉडल की कुछ अवधारणाएँ हैं:क्लास, ऑब्जेक्ट, एनकैप्सुलेशन, पॉलीमॉर्फिज्म, एब्सट्रैक्ट और फाइनल क्लासेस, और मेथड्स, इंटरफेस और इनहेरिटेंस, आदि ... इस लेख में, हम PHP में ऑब्जेक्ट-ओरिएंटेड तकनीकों से संबंधित Abstract Class और इसकी व