Question

J'intègre Zend Framework et Doctrine 2 , et je découvre la couche service .

Maintenant, je comprends (je me trompe?) Que j'ai 2 architectures possibles:

  • Un modèle , où les classes contiennent une logique de domaine, à savoir les propriétés + getters / setters + méthodes complexes
  • Un modèle léger , où les classes contiennent des propriétés + getters / setters et un Service couche contenant la logique de domaine, et la modification des classes de modèles

Quels sont les avantages / inconvénients de chacun?

Il me semble bizarre de perdre POO en mettant la logique de domaine comme externe au modèle, donc je ne comprends pas pourquoi l'utilisation d'une couche de service.

Était-ce utile?

La solution

Qu'est-ce que vous fait penser que votre couche de service est externe à votre modèle? Il n'est pas. En fait, il est une partie centrale de votre modèle, ainsi que des entités, des référentiels, etc.

Si vous utilisez Doctine2, vous voulez une couche de service. L'une des raisons est que vous ne voulez pas que vos entités savoir au sujet de la EntityManager (mal testabilité). Une autre est que vous ne voulez pas que vos contrôleurs de conduire l'EM (ce n'est pas le travail des contrôleurs savoir sur la persistance).

J'utilise généralement une architecture où la couche de service est l'interface du contrôleur au modèle. La couche de service qui opèrent l'accès aux fonctions des entités (soit en les prenant comme paramètres, ou de les retourner, ou les deux). La persistance des entités est masqué par la couche de service. Soit la classe de service entraîne l'EM et les référentiels lui-même, ou délègue à un autre code que le contrôleur ne sera jamais EXISTE savoir.

Ainsi, la couche de service fournit des API et que les contrôleurs peuvent utiliser pour manipuler vos données d'entreprise.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top