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

पीएचपी क्लास एब्स्ट्रैक्शन

परिचय

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में, एक अमूर्त वर्ग वह होता है जिसे तत्काल किया जा सकता है, यानी ऐसे वर्ग की वस्तु घोषित करना संभव नहीं है। PHP संस्करण 5.0 के बाद से अमूर्त वर्ग की अवधारणा का समर्थन करता है

अमूर्त कीवर्ड के साथ परिभाषित एक वर्ग एक अमूर्त वर्ग बन जाता है। इसके अलावा, कोई भी वर्ग जिसमें कम से कम एक सार पद्धति हो, उसे भी सार माना जाता है।

सिंटैक्स

<?php
class testclass{
   //
}
?>

यदि हम इस वर्ग के लिए कोई ऑब्जेक्ट बनाने का प्रयास करते हैं, तो PHP पार्सर निम्नानुसार त्रुटि देता है -

$a=new testclass();
PHP Fatal error: Uncaught Error: Cannot instantiate abstract class testclass

अमूर्त विधि

एब्सट्रैक्ट मेथड केवल अपने सिग्नेचर यानी इसकी दृश्यता, तर्क और रिटर्न टाइप को टाइप हिंट के साथ घोषित करता है और इसमें कोई कार्यक्षमता नहीं होती है। एक वर्ग जो इस तरह के एक अमूर्त वर्ग को विरासत में लेता है, उसे सभी अमूर्त विधियों को ओवरराइड (परिभाषा प्रदान करना) चाहिए। चाइल्ड क्लास में संगत विधि में पैरेंट क्लास की तरह ही हस्ताक्षर होने चाहिए। यदि बाल वर्ग इस शर्त को पूरा नहीं करता है, तो PHP पार्सर अपवाद फेंकता है। एक वर्ग जो एक अमूर्त वर्ग का विस्तार करता है उसे अब तत्काल किया जा सकता है, इसलिए इसे ठोस वर्ग कहा जाता है

निम्नलिखित उदाहरण में, मूल वर्ग में दो अमूर्त विधियाँ हैं, जिनमें से केवल एक को बाल वर्ग में पुनर्परिभाषित किया गया है। इसके परिणामस्वरूप त्रुटि इस प्रकार होती है -

उदाहरण

<?php
abstract class testclass{
   abstract function test1();
   abstract function hello();
}
class myclass extends testclass{
   function test1(){
      echo "Overrides parent test method";
   }
}
$a=new myclass();
?>

आउटपुट

त्रुटि संदेश निम्नलिखित है

PHP Fatal error: Class myclass contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (testclass::hello)

तर्कों के साथ सार विधि

जब अमूर्त पद्धति को तर्कों के साथ परिभाषित किया जाता है, तो इसे समान संख्या में तर्कों के साथ बाल वर्ग में ओवरराइड किया जाना चाहिए

निम्नलिखित उदाहरण में, पैरेंट क्लास में एब्स्ट्रैक्ट मेथड के दो तर्क हैं। चाइल्ड क्लास भी दो तर्कों के साथ एक ही फ़ंक्शन को परिभाषित करता है

उदाहरण

<?php
abstract class testclass{
   abstract function hello($name, $age);
}
class myclass extends testclass{
   function hello($name, $age){
      echo "My name is $name and my age is $age";
   }
}
$a=new myclass();
$a->hello("Ravi",20);
?>

आउटपुट

यह निम्नलिखित आउटपुट देगा -

My name is Ravi and my age is 20

  1. PHP में class_exists () फ़ंक्शन

    PHP में class_exists() फ़ंक्शन यह जांचता है कि क्या क्लास को परिभाषित किया गया है। यदि वर्ग एक परिभाषित वर्ग है तो यह TRUE लौटाता है, अन्यथा यह FALSE लौटाता है। सिंटैक्स class_exists(class, autoload) पैरामीटर कक्षा - कक्षा का नाम। स्वतः लोड करें - डिफ़ॉल्ट रूप से __autoload को कॉल करना है या न

  1. सी # में अमूर्तता क्या है?

    ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में एब्स्ट्रैक्शन और एनकैप्सुलेशन संबंधित विशेषताएं हैं। एब्स्ट्रैक्शन प्रासंगिक जानकारी को दृश्यमान बनाने की अनुमति देता है और एनकैप्सुलेशन एक प्रोग्रामर को एब्सट्रैक्शन के वांछित स्तर को लागू करने में सक्षम बनाता है। सी # में अमूर्त वर्गों का उपयोग करके अमूर्तता प्र

  1. जावा में सार वर्ग

    जिस वर्ग की घोषणा में सार कीवर्ड होता है उसे अमूर्त वर्ग के रूप में जाना जाता है। एब्स्ट्रैक्ट क्लासेस में एब्सट्रैक्ट मेथड्स हो भी सकते हैं या नहीं भी हो सकते हैं, यानी बॉडी के बिना मेथड्स ( public void get(); ) लेकिन, यदि किसी वर्ग में कम से कम एक सार विधि है, तो कक्षा को सार घोषित किया जाना चाहि