C'est le Repository qui a la responsabilité de connaître la base de données.
L'objet City lui n'a aucune connaissance de la base de données.
Et ton exemple avec PDO démontre bien tout le problème. Ton objet City est très dépendant de ta base de données.
Et la couche d'aggrégation n'est pas spécialement une forte valeur ajoutée.
De plus ton exemple PDO montre qu'un sens de travail, base de données > ton objet et l'inverse ?
Moi je fais :
$city = new City();
$city->setName("Luxiol");
$unitOfWork->pushSave($city);
$unitOfWork->process();
Petit complément, PDO n'est pas DU TOUT un DataMapper car il couple justement directement l'objet à la base de données, tout au plus si tu veux c'est un ActiveRecord qui marche que dans le sens base de données > objet.
L'objet City lui n'a aucune connaissance de la base de données.
Et ton exemple avec PDO démontre bien tout le problème. Ton objet City est très dépendant de ta base de données.
Et la couche d'aggrégation n'est pas spécialement une forte valeur ajoutée.
De plus ton exemple PDO montre qu'un sens de travail, base de données > ton objet et l'inverse ?
Moi je fais :
$city = new City();
$city->setName("Luxiol");
$unitOfWork->pushSave($city);
$unitOfWork->process();
Petit complément, PDO n'est pas DU TOUT un DataMapper car il couple justement directement l'objet à la base de données, tout au plus si tu veux c'est un ActiveRecord qui marche que dans le sens base de données > objet.