Précédent   Forum du club des développeurs et IT Pro > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 30/12/2012, 23h00   #1
Blackh0le
Invité de passage
 
Étudiant
Inscription : décembre 2009
Messages : 2
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2009
Messages : 2
Points : 1
Points : 1
Par défaut Doctrine 2 et injection de dépendances

Bonjour à tous, et bonnes fêtes de fin d'année au passage !

Je suis en train de migrer mon code depuis un Repository Pattern personnel vers Doctrine 2. Ça fonctionne plutôt bien, il y a juste quelque chose qui me chagrine.

Mes différentes classes de services ont besoin de différents repositories, qu'elles demandent dans leur constructeur. Jusqu'à présent, un petit injecteur automatique de dépendances leur fournissait ce dont elles avaient besoin, mes repositories n'étant que des classes habituelles.

Code :
1
2
3
4
5
6
7
8
9
<?php
class Service
{
	public function __construct(repository\User $repositoryUser, repository\Car $repositoryCar)
	{
		// ...
	}
}
?>

Avec Doctrine, les choses changent, puisque les repositories ne peuvent plus être instancié directement mais doivent être obtenues depuis l'Entity Manager :
Code :
<?php $entityManager->getRepository('...'); ?>
Comment puis-je gérer cette situation ?

J'ai bien deux solutions en tête, mais aucune ne me convient.
  • Les services pourraient ne demander plus que l'instance de l'Entity Manager… Ce serait une violation pure et simple de la loi de Déméter.
  • Je pourrais modifier mon injecteur de dépendances pour qu'au lieu d'instancier les repositories, il les récupère depuis l'Entity Manager… En plus de devoir traiter un « cas particulier », ce qui n'est jamais bon signe, ce serait me coupler très fortement à Doctrine.


Je débute avec Doctrine, alors est-ce que je suis passé à côté de quelque chose ? Quel est votre avis sur la question ?
Merci d'avance pour vos suggestions !
Blackh0le est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h29.


 
 
 
 
Partenaires

Hébergement Web