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 )


