If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
PHP में Interface , Abstraction achieve करने का दूसरा तरीका है। Interface में defined सभी methods abstract होते हैं इसलिए जो भी class इसको implement करेगी उस class को सभी methods का implementation provide करना पड़ेगा।
PHP में Interface को Class की तरह ही define किया जाता है , बस class keyword का use न interface keyword का use किया जाता है। Interface में methods का content define नहीं किया जाता है।
Interface में defined सभी methods public होने चाहिए , ताकि इन्हे class के बाहर से भी access किया जा सके। और इन methods को किसी class के द्वारा ही implement किया जायगा।
File : php_interface.php
<?php
interface Animal
{
public function dog();
}
class MyClass implements Animal
{
public function dog()
{
echo 'Dogs bark';
}
}
$obj = new MyClass();
$obj->dog();
?>
Dogs bark
Abstract Class की तरह Interface का Object नहीं बना सकते हैं।
Interface में आप Abstract Class की तरह __construct() & __destruct() का use नहीं कर सकते है।
Interface में defined सभी methods का implementation required है।
Interface में defined सभी methods public होने चाहिए , अगर आप visibility define नहीं करते तो भी By Default public ही होते हैं। punlic नहीं define करने पर fatal error generate होती है।
Fatal error:Access type for interface method ClassName::Methodname() must be omitted.
Interface में आप member variables define (static , non - static) नहीं कर सकते हैं। हाँ लेकिन आप constant variables define कर सकते हैं। अगर आप normal variable define करते हैं तो fatal error generate होगी।
Fatal error: Interfaces may not include member variables
एक single class एक से ज्यादा Interfaces को implement कर सकती है , इसका सबसे बड़ा reason भी है , हम जानते हैं कि super class के constructor run करने के लिए parent::__construct() का use किया जाता है। अब क्योंकि Interface में constructor और destructor define नहीं कर सकते हैं इसलिए जो class इसे implement करती है बो आसानी से constructor और destructor use कर सकती है।
Interface में constructor और destructor define करने से इसके implementation class में जब parent::__construct() call किया जाता तो ये confusion रहती की किस super Interface का constructor call होगा।
इसके अलावा आप अलग - अलग Interfaces में same method भी define कर सकते हैं , लेकिन methods का signature same होना चाहिए , means methods के parameters , name same होने चाहिए।
See Example
File : php_interface2.php
<?php
interface Animal
{
public function dog();
}
interface OtherAnimal
{
/*defining same method*/
public function dog();
}
class MyClass implements Animal,OtherAnimal
{
public function dog()
{
echo 'Dogs bark';
}
}
$obj = new MyClass();
$obj->dog();
?>
Dogs bark