इंटरफ़ेस बनाम अमूर्त वर्ग PHP

PHP
By भगवाचौहान
इंटरफ़ेस बनाम अमूर्त वर्ग PHP

PHP सबसे लोकप्रिय वेब विकास भाषाओं में से एक है और वेबसाइट और वेब एप्लिकेशन विकास के लिए व्यापक रूप से उपयोग की जाती है। PHP 5 2004 में, OOP को पेश किया गया था PHP और यह लगातार विकसित होकर वर्तमान तक पहुंच गया है जहां सॉफ्टवेयर विकसित करना बहुत आसान है PHP OOPs अवधारणाओं को लागू करके। PHP के बाद से PHP 7.0 ने रिटर्न टाइप घोषणा सहित सहायक प्रकारों पर बहुत ध्यान केंद्रित किया है। इंटरफेस और क्लासेस किसी भी OOP भाषा का सबसे महत्वपूर्ण पहलू हैं और अच्छे सॉफ़्टवेयर को डिज़ाइन करने के लिए आधार के रूप में माना जाता है जिसे दूसरों द्वारा आसानी से समझा, बढ़ाया और प्रबंधित किया जा सकता है। यह ट्यूटोरियल उदाहरणों के साथ इंटरफ़ेस और एब्सट्रैक्ट क्लास के बीच अंतर को समझाता है।

हम प्रोटोटाइप को डिज़ाइन करके वास्तविक कार्यान्वयन को छोड़ने के लिए अमूर्तता के लिए इंटरफेस और एब्सट्रैक्ट क्लास दोनों का उपयोग कर सकते हैं। वास्तविक कार्यान्वयन इंटरफेस और एब्सट्रैक्ट क्लास को लागू करने वाली कक्षाओं द्वारा किया जा सकता है। जब तक सभी एब्सट्रैक्ट फ़ंक्शन परिभाषित नहीं किए जाते हैं, तब तक एक इंटरफ़ेस या एब्सट्रैक्ट क्लास को पूरी तरह से कार्यान्वित नहीं माना जा सकता है।

नोट्स: यह ट्यूटोरियल मानता है कि आप उपयोग कर रहे हैं PHP 7.1 या उससे ऊपर और कंपोजर का उपयोग करने में पहले से ही परिचित हैं। आप भी अनुसरण कर सकते हैं ऑटोलोड कैसे करें PHP कंपोजर का उपयोग करके कक्षाएं अपनी परियोजना को स्थापित करने के लिए और यह वास्तविक उदाहरणों के साथ कक्षाओं और इंटरफेस का उपयोग भी दिखाता है।

 

इंटरफ़ेस उदाहरण

इंटरफ़ेस को कक्षाओं द्वारा कार्यान्वित किए जाने वाले प्रोटोटाइप या ब्लूप्रिंट के रूप में माना जा सकता है। इंटरफ़ेस केवल बिना किसी परिभाषा भाग के फ़ंक्शन घोषित कर सकते हैं जैसा कि नीचे दिखाया गया है। मैंने इन उदाहरणों में इंटरफ़ेस की महत्वपूर्ण अवधारणाओं को शामिल किया है।

// An Interface without functions, using constants
interface A {
	// Constant
	const GLOBAL_A = 10;
}
// An Interface with constructor and public functions declaration
interface B {
// Constant
const GLOBAL_B = 20;
// Contructor
public function __construct();
// Public Function - Add
public function add( int $a, int $b ): int;
// Public Function - Sub
abstract function sub( int $a, int $b ): int; }
// An Interface showing single inheritance
interface C extends A {
// Public Function - Add
public function add( int $a, int $b ): int; }
// An Interface showing multiple inheritance
interface D extends A, B {
// Public Function - Multiple
public function multiply( int $a, int $b ): int;
// Public Function - Division
public function division( int $a, int $b ): float; }

 

अमूर्त वर्ग के उदाहरण

एक वर्ग को एक के रूप में माना जा सकता है सार वर्ग यदि इसमें शामिल है सार इसकी घोषणा में कीवर्ड। हम एब्सट्रैक्ट क्लास के ऑब्जेक्ट नहीं बना सकते। एब्सट्रैक्ट क्लास एब्सट्रैक्ट मेथड्स घोषित कर सकता है, लेकिन इसकी घोषणा में एब्सट्रैक्ट कीवर्ड के बिना एक ठोस क्लास एब्सट्रैक्ट मेथड्स घोषित नहीं कर सकता। नीचे दिए गए उदाहरण एब्सट्रैक्ट क्लास को दिखाते हैं।

// An Abstract Class without methods
abstract class CA implements A {
// Constant
const GLOBAL_C = 30;
// Static Variable
public static $d = 60;
// Public Member Variable
public $e = 70;
// Protected Member Variable
protected $f = 80;
// Private Member Variable
private $g = 90; }
// An Abstract Class with abstract and non abstract methods
abstract class CB implements B {
public function __construct() {
echo "In CB constructor."; }
// Abstract Method with public and abstract modifiers
public abstract function add( int $a, int $b ) : int;
// Public Method
public function sub( int $a, int $b ) : int {
return $a - $b; } }
// An Abstract Class showing multiple inheritance
abstract class CC implements A, B {
public function __construct() {
echo "In CC constructor."; }
// Public Method - Add
public function add( int $a, int $b ) : int {
return $a + $b; }
// Public Method - Sub
public function sub( int $a, int $b ) : int {
return $a - $b; } }
// An Abstract Class showing multiple inheritance
abstract class CD extends CC implements C, D {
public function __construct() {
echo "In CD constructor."; }
// Public Method - Multiply
public function multiply( int $a, int $b ) : int {
return $a * $b; } }
// Concrete Class
class CE extends CD {
public function __construct() {
echo "In CE constructor.";
}
// Public Method - Division
public function division( int $a, int $b ) : float {
$result = 0;
try {
$result = $a / $b; } catch(DivisionByZeroError $ex) {
echo $e->getMessage(); }
return $result; } }

 

घोषणा

इंटरफ़ेस या एब्सट्रैक्ट क्लास घोषित करते समय ध्यान रखने योग्य महत्वपूर्ण बिंदु नीचे सूचीबद्ध हैं।

RSI इंटरफेस संशोधक का उपयोग करके घोषित किया जा सकता है इंटरफेस.

RSI सार वर्ग संशोधक का उपयोग करके घोषित किया जा सकता है सार और कक्षा. इसका उपयोग करना अनिवार्य है सार सभी अमूर्त वर्गों के लिए संशोधक.

दोनों इंटरफेस और सार वर्ग एक्सेस संशोधक अर्थात सार्वजनिक, संरक्षित और निजी का उपयोग नहीं किया जा सकता।

दोनों इंटरफेस और सार वर्ग उपयोग नहीं कर सकते अंतिम संशोधक जो उनके अमूर्तन का खंडन करता है।

 

चर

RSI इंटरफेस केवल स्थिरांकों को घोषित और परिभाषित कर सकते हैं const संशोधक।

RSI इंटरफेस एक्सेस संशोधक अर्थात सार्वजनिक, संरक्षित और निजी का उपयोग करके चर घोषित नहीं किया जा सकता है।

RSI चर में घोषित किया गया सार वर्ग हो सकता है स्थिर, सार्वजनिक, संरक्षितया, निजी जैसा कि में दिखाया गया है कक्षा सीए.

दोनों इंटरफेस और सार वर्ग उपयोग नहीं कर सकते अंतिम चर घोषित करने के लिए संशोधक.

 

कार्य

घोषित कार्य इंटरफेस रहे स्वाभाविक रूप से सार्वजनिक और सार के रूप में दिखाया गया इंटरफ़ेस बीसार्वजनिक और अमूर्त संशोधक का उपयोग करना वैकल्पिक है।

RSI इंटरफ़ेस फ़ंक्शन उपयोग नहीं कर सकते निजी और संरक्षित पहुँच संशोधक.

RSI कार्यों में घोषित किया गया सार वर्ग हो सकता है अंतिम, स्थिर, सार्वजनिक, संरक्षितया, निजीअमूर्त वर्गों में हमेशा अमूर्त और गैर-अमूर्त फ़ंक्शन हो सकते हैं।

RSI अमूर्त कार्य एक की सार वर्ग हमेशा इसका उपयोग करना चाहिए सार कीवर्ड।

इंटरफ़ेस को लागू करने वाले क्लासों के फ़ंक्शन सिग्नेचर LSP (लिस्कोव प्रतिस्थापन सिद्धांत) के साथ संगत होने चाहिए। क्लास और इंटरफ़ेस का फ़ंक्शन घोषणापत्र एक ही फ़ंक्शन के लिए समान होना चाहिए।

 

विस्तार

हम निजी या संरक्षित इंटरफेस और एब्सट्रैक्ट क्लासेस घोषित नहीं कर सकते।

इंटरफेस और एब्सट्रैक्ट क्लासेस को अन्य नेमस्पेस या अन्य नेमस्पेस के लिए दृश्यमान बनाया जा सकता है। PHP स्क्रिप्ट का उपयोग करके उन्हें आयात करके उपयोग कीवर्ड।

इंटरफेस और एब्सट्रैक्ट क्लासेस को बिना आयात किए सीधे उसी नामस्थान में उपयोग किया जा सकता है।

 

विरासत

An इंटरफेस एकल या एकाधिक इंटरफेस का विस्तार कर सकते हैं।

An सार वर्ग केवल एक ही सार या ठोस वर्ग का विस्तार कर सकते हैं.

 

कार्यान्वयन

An इंटरफेस हो सकता है कार्यान्वित एक के द्वारा सार वर्ग कीवर्ड का उपयोग करके औजार.

An सार वर्ग कर सकते हैं लागू करने के विभिन्न इंटरफेस.

An सार वर्ग कर सकते हैं विस्तार la सार or कंक्रीट क्लास कीवर्ड का उपयोग करके फैली.

An इंटरफेस नही सकता लागू करने के एक और इंटरफेस or सार वर्ग.

 

प्रयोग

हम एब्सट्रैक्ट क्लास का उपयोग क्लास को आंशिक रूप से क्रियान्वित करके कर सकते हैं तथा शेष कार्यान्वयन को चाइल्ड क्लासों पर छोड़ सकते हैं।

हम केवल विधियों को घोषित करने के लिए इंटरफ़ेस का उपयोग कर सकते हैं, तथा कार्यान्वयन को कक्षाओं पर छोड़ सकते हैं।

हम वैश्विक चर घोषित करने के लिए एक इंटरफ़ेस का उपयोग कर सकते हैं।

हम कक्षाओं में बहुविध विरासत प्राप्त करने के लिए इंटरफेस का उपयोग कर सकते हैं।

 

सारांश

इस ट्यूटोरियल में इंटरफेस और क्लासेस के उदाहरण दिए गए हैं, जो उनके उपयोग को दर्शाते हैं। इसमें घोषणा, चर, फ़ंक्शन, स्कोप, इनहेरिटेंस और कार्यान्वयन के लिए क्लासेस और इंटरफ़ेस की तुलना भी दी गई है।

आप सीधे ट्यूटोरियल्स24x7 पर या डिस्कस के माध्यम से टिप्पणी सबमिट करके अपने विचार साझा करके चर्चा में शामिल हो सकते हैं।

इस ब्लॉग को साझा करें:

उपयोगकर्ता bhagwatchouhan का प्रोफ़ाइल चित्र
भगवाचौहान