• [^] # Re: interface systématique ?

    Posté par (site web personnel) . En réponse au journal Interfaces Orientées Objet PHP. Évalué à 4.

    Bon ok, en théorie c'est génial, mais en pratique... ? A utiliser avec parcimonie ou systématiquement ?

    Les interfaces ça sert absolument à rien si c'est juste pour faire joli dans un fichier d'interfaces. Dans ce cas, au mieux, ça sert de documentation des classes. Ce billet n'est pas convainquant quant à la nécessité absolue d'utiliser des interfaces en PHP.

    Là où les interfaces deviennent vraiment intéressantes, c'est quand elles sont utilisée au milieu d'un framework qui les prend en compte intensivement (Zope3). Là les interfaces prennent tout leur intérêt, et sont utilisées pour faire marcher toute la mécanique. Les composants sont rangés dans des registres par leur interface, et peuvent être récupérés de la même manière. Les vues (par ex. pages HTML) sont associées aux objets via leur interface. Les objets peuvent être adaptés pour offrir une autre interface, les widgets HTML sont choisis automatiquement en fonction de l'interface offerte par un objet, l'authentification se base sur des interfaces pour pouvoir authentifier de n'importe quelle façon derrière, les droits d'accès aux objets sont séparés par interface (on peut par exemple autoriser pour un objet l'utilisation d' IReadContainer, mais pas IWriteContainer) et un objet peut bénéficier d'un tout un tas de fonctionnalités supplémentaires juste en lui ajoutant une simple interface vide (marqueur), qui va ramener automatiquement un adaptateur inscrit pour cette interface. Par exemple un objet de contenu pourra subitement offrir une gestion des commentaires juste en lui ajoutant l'interface ICommentable.

    Dans ces conditions, oui, c'est pas seulement génial en théorie, ça devient génial en pratique, et un réel plaisir à utiliser.