PHP OOP - Interfaces
PHP Interfaces
An Interface lets you define which public methods a class MUST implement, without defining how they should be implemented.
Interfaces are declared with the
interface keyword, and the methods
declared in an interface must be
public:
interface InterfaceName {
public function method1();
public function method2();
}To implement an interface, a class must use the
implements keyword.
A class that implements an interface must implement all of the interface's methods.
class ClassName implements InterfaceName{
public function method1() {
// some code
}
public function method2(){
// some code
}
}The following example defines an interface named Animal, with one public method (makeSound()). The Cat and Dog class implement the Animal interface, and they both must include the makeSound() method:
Example
<?php
// Define the interface
interface Animal {
public function makeSound();
}
// Implement the interface in a class
class Cat implements Animal {
public function makeSound() {
echo "Meow";
}
}
// Implement the interface in
another class
class Dog implements Animal {
public function makeSound() {
echo "Woff";
}
}
$cat = new Cat();
$cat->makeSound();
$dog = new Dog();
$dog->makeSound();
?>
Try it Yourself »
PHP - Interfaces vs. Abstract Classes
Interface are similar to abstract classes. The difference between interfaces and abstract classes are:
- Interfaces cannot have properties, while abstract classes can
- All interface methods must be public, while abstract methods can be public or protected
- All methods in an interface are abstract, so they cannot be implemented in code and the abstract keyword is not necessary
- Classes can implement an interface while inheriting from another class at the same time
Interfaces make it easy to use a variety of different classes in the same way. When one or more classes use the same interface, it is referred to as "polymorphism".
PHP - Using Interfaces
The following example defines an interface named Animal, with two public methods (fromFamily() and makeSound()). The Cat and Dog class implement the Animal interface, and they must include both the fromFamily() and the makeSound() methods:
Example
<?php
interface Animal {
public function fromFamily();
public function makeSound();
}
class Cat implements Animal {
public function fromFamily() {
echo "From family:
Felidae (Relatives: lions, tigers, jaguars, lynx, cougars, and
cheetahs).<br>";
}
public function makeSound() {
echo "Sound: Meow.";
}
}
class Dog
implements Animal {
public function fromFamily() {
echo "From family: Canidae (Relatives: wolves, foxes, coyotes, jackals, and
domestic dogs).<br>";
}
public function makeSound() {
echo "Sound: Woff.";
}
}
echo "<h3>Cats</h3>";
$cat = new Cat();
$cat->fromFamily();
$cat->makeSound();
echo "<h3>Dogs</h3>";
$dog = new Dog();
$dog->fromFamily();
$dog->makeSound();
?>
Try it Yourself »