Fluent interface : oui mais y’a un mais


Une des grandes “modes” du moment c’est la programmation en fluent interfaces. kézako ?

Les fluent interface sont des classes qui sont programmés de façon à ce que chaque fonction retourne $this. Oui bon on va pas chipoter mais c’est grosso modo ça y’a certes un peu plus de subtilité que ça mais si vous ne connaissez pas les fluent interface vous avez grosso modo une idée de ce que c’est.

Le but est d’obtenir un code plus lisible pour nous autres codeurs, car grâce à cette pirouette que nous permet la programmation orientée objet on peut transformer ceci:
[php]
<?php
$foo = new Bar();
$foo->setParamA(0);
$foo->setParamB(‘my_string’);
$foo->execute();
?>
[/php]

en quelque chose de nettement plus sexy :

[php]
<?php
$foo = new Bar();
$foo->setsetParamA(0)
->setParamB(‘myString’);
->execute();
?>
[/php]

C’est vachement plus simple à lire surtout quand on commence à appeler une dizaine de fonctions sur un objet.

Alors pourquoi ce billet. Pour vous mettre en garde, si cette méthode et très pratique pour nous elle l’est moins pour vos serveurs. Car sans fluent interface vous pouvez tester chaque retour de fonctions et donc vous arrêtez dès que quelque chose cloche. Avec les fluent interface vous serez obligé de passer dans tous vos tests. Alors vous me direz que je chipote et je suis entièrement d’accord.

Mais comme je pense à vous, je vous donne ma solution pour faire les choses bien comme il faut. Passez à PHP5 et utilisez les exceptions. Dès qu’une erreur bloquante pour la suite se produit vous levez une nouvelle exception. Il ne vous restera plus qu’à encadrer votre code d’un bloc “try/catch” pour faire ça tout proprement.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *