Naast gewone classes en abstracte classes is het ook mogelijk om interfaces te schrijven. 

Een interface is een ‘contract’ waaraan een class of abstracte class moet voldoen. Binnen een interface geef je aan welke publieke functionaliteit je verwacht van een class die de interface implementeert.

Een interface heeft in tegenstelling tot een abstracte class geen implementatie. Het bevat alleen definities van publieke functionaliteit.

<?php
interface Workable {
    /**
     *  Defines the method that works.
     */
    public function work();
}

In de bovenstaande interface hebben we een contract dat een ‘Workable’ aangeeft. Elke class die deze interface gebruikt zal de functie work moeten implementeren.

Implementeren van interfaces

Het implementeren van een interface gebeurd door het implements. Het is mogelijk om meerdere interfaces te implementeren. Dit in tegenstelling tot extends bij classes.

class Medewerker implements Workable {

    public function work() {
        echo 'Ik ben aan het werk!';
    }

}

Naast de functies zelf kan een interface ook parameters afdwingen. Het is belangrijk om deze parameters ook daadwerkelijk te implementeren anders zal de class afwijken van het contract.