Déclarez vos repositories en services

En Symfony 2, tout (ou presque) peut être déclaré sous forme de service. Pour récupérer des entités, il est d'usage d'injecter Doctrine pour en manipuler son EntityManager. Mais il existe une méthode plus propre, consistant à injecter directement le repository de l'entité concernée, sous forme de service indépendant.

Pour ce faire, déclarez le repository sous forme de service, comme suit :

Il vous suffit maintenant d'injecter le service my_cms.repository.article au lieu de l'EntityManager.

Un grand avantage d'implémenter ce service est que vous n'aurez pas à mocker Doctrine, son EntityManager et votre repository dans vos tests unitaires : il vous suffira simplement de mocker votre repository ;)

De plus, vous respecterez alors la loi de Déméter.