In PHP l'uso delle interfacce è controllato da regole specifiche.
Definiamo un'interfaccia che possieda un metodo per generare un token di autenticazione:
interface Security {
public function createToken();
}
A questo punto implementiamo il metodo specificato in due classi distinte. Il metodo implementato deve avere lo stesso nome, la stessa visibilità e la stessa firma del metodo definito nell'interfaccia: questa è la regola fondamentale da seguire quando una classe implemenenta un'interfaccia.
class User implements Security {
protected $id;
public function __construct($id) {
$this->id = $id;
}
public function createToken() {
return uniqid();
}
}
class SessionManager implements Security {
private $session;
public function __construct() {
$this->session = $_SESSION;
}
public function createToken() {
return md5(uniqid() . $_SERVER['HTTP_USER_AGENT]);
}
}
Come si può notare la differenza sta nell'implementazione scelta per il metodo. La documentazione di PHP infatti afferma:
Object interfaces allow you to create code which specifies which methods a class must implement, without having to define how these methods are handled.
Comprendere il funzionamento delle interfacce è il primo passo per sviluppare un OOP polimorfico in PHP.