Interfaces : plus utiles qu’il n’y parait

Catégorie : PHP objet | Tag : , , , , ,
Share

C’est en regardant le détails des interfaces prédéfinies sur le [Manuel PHP|http://fr2.php.net/manual/fr] que j’ai mieux compris l’interêt des Interfaces. Prenons comme exemple l’interface [Traversable|http://fr2.php.net/manual/fr/class.traversable.php] : elle signifie que les class l’implétant doivent pouvoir parcourir des objets avec @@foreach@@. Pour cela, il faut que les class en question implémente, par exemple, l’interface prédéfinie [Iterator|http://fr2.php.net/manual/fr/class.iterator.php] qui définie les itérateurs. Ces itérateurs doivent pouvoir utiliser les fonctions @@rewind@@ (retour arrière), @@next@@ (au suivant), @@current@@ (position actuelle), etc… Et le manuel nous montre des exemples d’implémentations de ces interfaces. En somme, j’ai envi de dire que les interfaces sont aux class ce que sont les types aux variables en programmation « classique ». Un peu quoi… En structurant sa manière de programmer (en utilisant des types et/ou des interfaces) on diminue le risque d’erreurs ou de bugs, on améliore la lisibilité, la relecture et la réutilisation du code et ça :, c’est quand même tout l’enjeu d’un code durable !!! Ah, il est à noter qu’une interface peut hériter d’une autre. L’interface Iterator hérte de Traversable par exemple, et si on devait la créer, on écrirait : /// /// Même syntaxe qu’avec les class quoi ^^ Et une class peut aussi implémenter plusieurs interfaces, alors pour faciliter l’écriture, il est possible de séparer les interfaces par des virgules : /// /// Comme toujours, le Manuel PHP m’aura été d’une grande aide ! Je l’utilise beaucoup pour le procédural (la programmation non objet quoi), j’aurai dû y penser plus tôt pour l’objet ! –Je me demande s’il est possible de définir une class qui hérite de plusieurs autres class en les séparant par des virgules. En théorie oui.– Une class ne peut hériter de plusieurs class, bref l’héritage multiple est impossible en PHP, mais l’interfaçage multiple est possible en PHP. (ça, c’est dit ^^) Cela dit, une class ne peut pas implémenter deux interfaces partageant des noms de méthodes.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>