PHP Interfaces

PHP

PHP Interfaces

Interfaces आपको यह specify करने की अनुमति देते हैं कि क्लास को किन तरीकों को लागू करना चाहिए।

Interfaces एक ही तरह से कई अलग-अलग क्लास का उपयोग करना आसान बनाता है। जब एक या एक से अधिक क्लास एक समान यानि की same interface का उपयोग करते हैं, तो इसे "polymorphism" कहा जाता है।

interface कीवर्ड द्वारा इंटरफेस घोषित किया जाता है।

Interfaces v/s Abstract Classes

Interface एक abstract क्लास के समान होता है। Interface औरabstract क्लास के बीच अंतर निम्नलिखित हैं:

  • Interfaces में प्रॉपर्टीज नहीं सकते हैं, जबकि एक abstract क्लास में हो सकते हैं
  • सभी interface मेथड public होनी चाहिए, जबकि abstract क्लास की मेथड public या protected हो सकते हैं
  • एक interface में ऐसी मेथड होती हैं जिनका कोई implementations नहीं होता है, जिसका अर्थ है कि interface क्लास के सारे मेथड abstract मेथड होते हैं और ना ही abstract कीवर्ड की आवश्यकता पड़ती है।
  • Interfaces क्लास से अलग होते हैं क्योंकि वर्ग केवल एक क्लास से inherit हो सकता है जबकि क्लास एक या अधिक interfaces को लागू कर सकता है।

एक interface को लागू करने के लिए, एक क्लास को implements कीवर्ड का उपयोग करना पड़ता है।

Syntax
<?php
interface MyInterfaceName{
    public function methodFirst();
    public function methodSecond();
    public function methodThird();
}
?>

ऊपर Syntax में हम देख सकते हैं हमने तीन फंक्शन बनाया methodFirst, methodSecond and methodThird और उन तीनों मेथड में हमने कोई कोड implement नहीं किया

जैसे हमने पिछले चैप्टर PHP Abstract Classes मैं पढ़ा था अगर किसी मेथड में कोई कोड implement नहीं होता है तो वह एक abstract क्लास होती है बशर्ते उस मेथड के आगे abstract कीवर्ड का इस्तेमाल किया जाए। लेकिन यहां पर हम abstract कीवर्ड का इस्तेमाल नहीं कर रहे हैं फिर भी यह एक abstract मेथड जैसा काम कर रहा है

उदाहरण: PHP Interfaces
<?php
interface Books{
    public function titleName();
}

class Maths implements Books{
    public function titleName(){
        echo "Encyclopedias of Mathematics";
    }
}

$maths = new Maths();
$maths->titleName();
?>
उदाहरण 2: PHP Interfaces
<?php
// Interface
interface Books{
    public function titleName();
}

// Class
class Maths implements Books{
    public function titleName(){
        echo "Encyclopedias of Mathematics </br>";
    }
}

class Physics implements Books{
    public function titleName(){
        echo "Fundamentals of Physics </br>";
    }
}

class Finance implements Books{
    public function titleName(){
        echo "Rich Dad Poor Dad";
    }
}

// Create a list of books
$maths = new Maths();
$physics = new Physics();
$finance = new Finance();
$books = array($maths, $physics, $finance);

foreach ($books as $book){
    $book->titleName();
}
?>
Output
Encyclopedias of Mathematics
Fundamentals of Physics
Rich Dad Poor Dad

Maths, Physics और Finance सभी क्लास हैं जो Books इंटरफ़ेस को implement करते हैं, जिसका अर्थ है कि वे सभी titleName() मेथड का उपयोग करके बुक के टाइटल को प्रिंट कराने में सक्षम हैं।

उदाहरण 3: PHP Interfaces
<?php
// Interface
interface Books{
    public function titleName();
    public function authorName();
    public function price();
}

// Class
class Maths implements Books{
    public function titleName(){
        echo "Encyclopedias of Mathematics </br>";
    }
    public function authorName(){
        echo "James Stuart Tanton </br>";
    }
    public function price(){
        echo "Rs.9,393";
    }
}

class Finance implements Books{
    public function titleName(){
        echo "Rich Dad Poor Dad </br>";
    }
    public function authorName(){
        echo "Robert T. Kiyosaki </br>";
    }
    public function price(){
        echo "Rs.260";
    }
}


$maths = new Maths();
$maths->titleName();
$maths->authorName();
$maths->price();

echo "</br></br>";

$finance = new Finance();
$finance->titleName();
$finance->authorName();
$finance->price();
?>
Output
Encyclopedias of Mathematics
James Stuart Tanton
Rs.9,393

Rich Dad Poor Dad
Robert T. Kiyosaki
Rs.260

ऊपर दिए गए उदाहरण में हमने तीन public फंक्शन बनाया titleName(), authorName() और price() अब तीनों को हम अलग-अलग क्लास Maths और Finance में इंप्लीमेंट किया है।

नोट: किसी PHP Interface में हम जितने फंक्शन बनाते हैं उतने सारे फंक्शन को इंप्लीमेंट करते समय इस्तेमाल करना जरूरी होता है।

जैसे कि ऊपर दिए गए उदाहरण में Books इंटरफेस में हमने तीन फंक्शन बनाया है, इसका अर्थ है कि जब भी कभी हम किसी क्लास में Books को इंप्लीमेंट्स करेंगे तो हमें उस में बनाए गए तीनों फंक्शन को इस्तेमाल करना जरूरी होगा।

ऐसा नहीं हो सकता कि इंटरफ़ेस में हमने 3 मेथड का निर्माण किया और इंप्लीमेंट करते समय किसी क्लास में हम सिर्फ दो मेथड का हीं इस्तेमाल कर रहे हैं, अगर ऐसा करने की कोशिश करेंगे तो या एक error जनरेट करेगा।

Article By: Brajlal Prasad
Created on: 15 Jun 2023  1139  Views
 Print Article
Report Error

If you want to report an error, or any suggestion please send us an email to [email protected]