Je n’ai pas encore bien saisi l’intérêt des Interfaces dans la POO. Si je comprend bien, une interface liste toutes les méthodes que doivent impérativement « connaître » les classes si elles veulent implémenter cette Interface. Pour moi, cela permet de structurer légèrement le code (si on a plusieurs classes qui implémentent une Interface, il suffit d’aller voir cette Interface pour connaitre toutes les méthodes importantes), et … bah franchement, non, je ne vois pas. A voir…
On créé une Interface avec le mot clé interface
! Facile jusqu’ici 🙂 Puis il reste à préciser qu’une classe l’implémente avec le mot clé implements
.
<?php interface Joli { public function design(); public function autoCompleter(); } class BlogDeBN implements Joli { public function design() { echo 'Je suis un joli design !'; } public function autoCompleter() { // Appel à l'auto-completer de Scriptaculous :D } }
Des Interfaces sont prédéfinies en PHP, et il est possible de les connaitre à l’aide du code suivant :
<?php print_r(get_declared_interfaces());
Qui affichera :
<?php Array ( [0] => Traversable [1] => IteratorAggregate [2] => Iterator [3] => ArrayAccess [4] => reflector [5] => RecursiveIterator [6] => SeekableIterator )
Il existe aussi des class prédéfinies :
<?php print_r(get_declared_classes());
Qui affichera :
<?php Array ( [0] => stdClass [1] => __PHP_Incomplete_Class [2] => Directory )