INTERFACE
Interface
-> Fournit un plan général et ne peut contenir que des signatures de méthodes public et des contantes, pas d'attributs.
-> On ne peut pas créer d'objet à partir d'une interface.
-> Une interface doit obligatoirement être étendue pour pouvoir l'utiliser, grâce à implement.
-> Ne peut pas avoir le même nom qu'une classe.
-> On peut implémenter plusieurs interfaces avec la même class. Il suffit de mettre les noms des interfaces séparés d'une virgule.
Exemple d'une interface Personnel :
interface Personnel{
const ANCIENNETE_MIN = 5;
const ANCIENNETE_MAX = 20;
public function getNom();
public function getAnciennete();
public function getIndice();
public function calculerSalaire();
}
Classe qui implemente l'inteface Personnel :
class Professeur implements Personnel{
private $nom;
private $anciennete;
private $indice;
public function __construct($nom, $anciennete, indice){
$this->setNom($nom);
$this->setAnciennete($anciennete);
$this->setIndice($indice);
}
public function setNom($nom){ $this->nom = $nom; }
public function setAnciennete($anciennete){ $this->anciennete = $anciennete;}
public function setIndice($indice){ $this->indice = $indice;}
public function getNom(){ return $this->nom;}
public function getAnciennete(){ return $this->anciennete;}
public function getIndice(){ return $this->indice;}
public function calculerSalaire(){
return 1000 * ( 1 + $this-> getIndice() * $this-> getAnciennete() / 100);
}
}
Instance de la class Personnel
$prof1 = new Professeur('Paul', 12, 54);
Affichage de la méthode getNom
echo prof1->getNom();
Paul
Affichage de la méthode calculerSalaire
echo prof1->calculerSalaire();
14500