Skip to content
Related Articles

Related Articles

Improve Article

When do we need Interfaces in PHP?

  • Last Updated : 25 Jun, 2021

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.
Example:
 

php




<?php
interface man {
 
   // List of public methods
 
}

Interfaces can contain methods and/or constants, but no attributes. Interface constants have the same restrictions as class constants. Interface methods are implicitly abstract.
Example:
 

php




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

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




// Function to Implements more than one
// interface by single class.
  
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: 
     

php




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

Below is a complete example that shows how interfaces work. 
Example: 
 

php




<?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 Triangle"
print $triangle->describe();
?>

Output: 
 

GeeksforGeeks green Triangle

Importance of using Interfaces: 
 

  • Interface provide a flexible base/root structure that you don’t get with classes.
  • By implementing interface the caller of the object need to care only about the object’s interface not implementations of the object’s methods.
  • Interface allows unrelated classes to implement the same set of methods regardless of their positions in the class inheritance hierarchy.
  • Interface enables you to model multiple inheritance.

 




My Personal Notes arrow_drop_up
Recommended Articles
Page :