PHP में instanceof ऑपरेटर और OOP में इनहेरिटेंस

आइए instanceof ऑपरेटर का उपयोग करते समय इनहेरिटेंस की विशेषताओं को समझते हैं। मान लीजिए कि हमारे पास एक पैरेंट क्लास और एक चाइल्ड क्लास है:

index.php<?php
  // पैरेंट क्लास:
  class ParentClass
  {
    
  }
  
  // चाइल्ड क्लास:
  class ChildClass extends ParentClass
  {
    
  }
?>

चाइल्ड क्लास का एक ऑब्जेक्ट बनाएं:

index.php<?php
  $obj = new ChildClass;
?>

अब instanceof का उपयोग करके जांच करें कि क्या हमारा ऑब्जेक्ट क्लास ParentClass और क्लास ChildClass से संबंधित है:

index.php<?php
  var_dump($obj instanceof ChildClass);  // true प्रिंट करेगा
  var_dump($obj instanceof ParentClass); // true प्रिंट करेगा
?>

जैसा कि आप उदाहरण से देख सकते हैं - instanceof ऑपरेटर जांच करते समय पैरेंट और चाइल्ड क्लासेज के बीच अंतर नहीं करता है।

भ्रमित न हों - यदि ऑब्जेक्ट वास्तव में पैरेंट क्लास का है तो, निश्चित रूप से, चाइल्ड क्लास से संबंधित होने की जांच false वापस करेगी:

php<?php
  $obj = new ParentClass; // पैरेंट क्लास का ऑब्जेक्ट
  
  var_dump($obj instanceof ParentClass); // true प्रिंट करेगा
  var_dump($obj instanceof ChildClass);  // false प्रिंट करेगा
?>
Задание 1

एक क्लास User बनाएं जिसमें पब्लिक प्रॉपर्टीज़ name और surname हों।

Задание 2

एक क्लास Employee बनाएं, जो क्लास User से इनहेरिट करे और प्रॉपर्टी salary जोड़े।

Задание 3

एक क्लास City बनाएं जिसमें पब्लिक प्रॉपर्टीज़ name और population हों।

Задание 4

क्लास User के 3 ऑब्जेक्ट्स, क्लास Employee के 3 ऑब्जेक्ट्स, क्लास City के 3 ऑब्जेक्ट्स बनाएं, और किसी भी क्रम में उन्हें ऐरे $arr में लिखें।

Задание 5

ऐरे $arr को लूप से इटरेट करें और उन ऑब्जेक्ट्स की प्रॉपर्टी name का एक कॉलम स्क्रीन पर प्रिंट करें, जो क्लास User या उसके चाइल्ड क्लास से संबंधित हैं।

Задание 6

ऐरे $arr को लूप से इटरेट करें और उन ऑब्जेक्ट्स की प्रॉपर्टी name का एक कॉलम स्क्रीन पर प्रिंट करें, जो क्लास User या उसके चाइल्ड क्लास से संबंधित नहीं हैं।

Задание 7

ऐरे $arr को लूप से इटरेट करें और उन ऑब्जेक्ट्स की प्रॉपर्टी name का एक कॉलम स्क्रीन पर प्रिंट करें, जो विशेष रूप से क्लास User से संबंधित हैं, यानी क्लास City या क्लास Employee से नहीं।