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
| <?phpinterfaceman {   // 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
| <?phpinterfaceIMyInterface {    constINTERFACE_CONST_1 = 1;    constINTERFACE_CONST_2 = 'a string';      publicfunctionmethod_1();    publicfunctionmethod_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. classMyClass implementsIMyInterface {     publicfunctionmethod_1() {         // method_1  implementation     }    publicfunctionmethod_2() {         // method_2 implementation    }} | 
Interesting Points :
- A class cannot implement two interfaces that have the 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
| interfaceFoo {}interfaceBar {}interfaceBass extendsFoo, 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 inheritinterfaceShape {      // Define the methods required for    // classes to implement    publicfunctiongetColor();    publicfunctionsetColor($color);            // Interfaces can't define common     // functions so we'll just define a     // method for all implementations to    // define    publicfunctiondescribe();}// Define a new 'Triangle' class that // inherits from the 'Shape' interface classTriangle implementsShape {      private$color= null;        // Define the required methods defined     // in the abstractclass 'Shape'    publicfunctiongetColor() {        return$this->color;    }         publicfunctionsetColor($color) {        $this->color = $color;    }         publicfunctiondescribe() {        returnsprintf("neveropen %s %s\n",             $this->getColor(), get_class($this));    }   }$triangle= newTriangle();// Set the color$triangle->setColor('green');// Print out the value of the describe common // method provided by the abstract class will// print out "I am an Orange Triangle"print$triangle->describe();?> | 
Output: 
 
neveropen 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.


 
                                    







