Lorsque l’on développe une application, le principal défi est de donner du sens à son code afin qu’il soit facilement compréhensible et maintenable. Une des nombreuses bonnes pratiques est alors d’utiliser des objets-valeurs plutôt que de simples variables. Pour stocker et manipuler ces derniers, il est possible d’utiliser un conteneur, un patron de conception souvent utilisé en parallèle.
En programmation objet, un conteneur n’est ni plus ni moins qu’un objet ayant pour but de gérer une collection d’élément. C’est un pattern assez peu utilisé dans le monde PHP car de nombreux développeurs ont pris l’habitude d’utiliser les tableaux associatifs fournis par le langage.
Il y a pourtant de multiples avantages à utiliser un conteneur dans vos applications. On peut citer :
- Éviter la duplication de code dans les classes
- Respecter le principe de responsabilité unique (vos objets métiers n’ont pas à se soucier de comment parcourir ou rechercher un élément dans un tableau, une liste ou une collection)
Pour vous aider à manipuler des conteneurs dans votre code, PHP fournit quelques interfaces qui peuvent être utiles lors de la mise en place de ces derniers :
Je suis toujours étonné que ce pattern ne soit pas plus connu et utilisé des développeurs
PHP. Je rencontre souvent des développeurs qui me disent que la mise en place d’un tel
objet est inutile et n’apporte pas de valeur (si ce n’est de complexifier inutilement
le code). Sachez que vous manipulez ce genre de classe très souvent sans vous en rendre
compte. Lorsque vous utilisez l’ORM Doctrine par exemple, qui utilise un conteneur
ArrayCollection pour la gestion des associations multiples des entités.