When do we need Interfaces in PHP?

admin_img Posted By Bajarangi soft , Posted On 31-12-2020

Interface are definitions of the public APIs that classes (implementing an interface) must implement. It is also known as contracts as an interface allows to specify a list of methods that a class must implement. Interface definition is similar to the class definition, just by changing the keyword class to interface.

interfaces in  PHP

Example:

 
<?php
interface man {
  
   // List of public methods
  
}
Example:Interfaces can contain methods and/or constants, but no attributes. Interface constants have the same restrictions as class constants. Interface methods are implicitly abstract.

<?php
  
interface IMyInterface {
    const INTERFACE_CONST_1 = 1;
    const INTERFACE_CONST_2 = 'a string';
    
    public function method_1();
    public function method_2();
}
?>

Example: Any class that needs to implement an interface must do using the implements keyword. A single class can implement more than one interface at a time.

   
class MyClass implements IMyInterface {
   
    public function method_1() {
   
        // method_1  implementation 
    }
  
    public function method_2() {
   
        // method_2 implementation
    }
}

Interesting Points :

  • A class cannot implement two interfaces that has the a same method name because it would end up with the method ambiguity.
  • Like classes, it is possible to establish an inheritance relationship between interfaces by using the same keyword “extends”.
Example: Any class that needs to implement an interface must do using the implements keyword. A single class can implement more than one interface at a time.

interface Foo {
  
}
interface Bar {
  
}
interface Bass extends Foo, Bar {
  
}


Below is a complete example that shows how interfaces work.
Example: Any class that needs to implement an interface must do using the implements keyword. A single class can implement more than one interface at a time.

<?php
  
// PHP program to Implement interface.
   
// Define a new Interface for all 'shapes' 
// to inherit
interface Shape {
    
    // Define the methods required for
    // classes to implement
    public function getColor();
    public function setColor($color);    
      
    // Interfaces can't define common 
    // functions so we'll just define a 
    // method for all implementations to
    // define
    public function describe();
}
  
// Define a new 'Triangle' class that 
// inherits from the 'Shape' interface
   
class Triangle implements Shape {
    
    private $color = null;
      
    // Define the required methods defined 
    // in the abstractclass 'Shape'
    public function getColor() {
        return $this->color;
    }   
    
    public function setColor($color) {
        $this->color = $color;
    }   
    
    public function describe() {
        return sprintf("GeeksforGeeks %s %s\n"
            $this->getColor(), get_class($this));
    }   
}
  
$triangle = new Triangle();
  
// Set the color
$triangle->setColor('green');
  
// Print out the value of the describe common 
// method provided by the abstract class will
// print out out "I am an Orange Triange"
print $triangle->describe();
?>

Related Post