En supposant qu'aucun ORM (par exemple Doctrine) ne soit utilisé à l'intérieur du Repository, ma question est la suivante: quelle est la bonne méthode pour instancier les objets Aggregate? Instance-t-il directement les objets enfants dans le référentiel et les affecte-t-il simplement à la racine agrégée par l'intermédiaire de ses paramètres ou la racine agrégée est-elle responsable de la construction de ses entités/objets enfants?Reconstitution correcte des objets Aggregate dans le Repository?
Exemple 1:
class UserRepository
{
// Create user domain entity.
$user = new User();
$user->setName('Juan');
// Create child object orders entity.
$orders = new Orders($orders);
$user->setOrders($orders);
}
Exemple 2:
class UserRepository
{
// Create user domain entity.
$user = new User();
$user->setName('Juan');
// Get orders.
$orders = $ordersDao->findByUser(1);
$user->setOrders($orders);
}
alors que dans l'exemple 2, instanciation des ordres sont pris en charge à l'intérieur de l'entité utilisatrice.
Je ne suis pas vraiment sûr (ne comprends pas complètement la question) mais le commentaire à la fin qui dit "les commandes sont prises en charge à l'intérieur de l'entité utilisateur" - Je pense que vous ne voulez pas faire cela. Les entités ne veulent pas s'installer elles-mêmes. Si vous devez déléguer ce type de responsabilité à l'intérieur d'une entité, vous devez le remplacer par un service de domaine. –