J'hésite entre
City n'a donc bien aucune connaissance de la BDD.
PS: j'utilise les procédures SQL parce que j'aime bien et que c'est une bonne abstraction du serveur de BDD; la procédure ici étant saveCity(?, ?) faisant surement un INSERT INTO ... (...) VALUES (...) ON DUPLICATE KEY UPDATE ....
Oui, PDO couple "l'objet" à la BDD, mais "l'objet"=le data bean. Pour moi, l'objet que sort PDO n'est effectivement pas le City, mais un "CityBean" disons, que le City peut alors accepter comme paramètre de constructeur (en plus de ses autres constructeurs usuels).
class CitySaverPdo extends APdoCaller { // APdoCaller stocke l'objet PDO et se charge de l'appel ->query()
public function save(City $city) {
$this->callSql('saveCity', $city->getId(), $city->getName());
}
}
$city = new City();
$citySaver = new CitySaverPdo($pdo);
$city->setname("Tokyo");
$citySaver->save($city);
City n'a donc bien aucune connaissance de la BDD.
PS: j'utilise les procédures SQL parce que j'aime bien et que c'est une bonne abstraction du serveur de BDD; la procédure ici étant saveCity(?, ?) faisant surement un INSERT INTO ... (...) VALUES (...) ON DUPLICATE KEY UPDATE ....
Oui, PDO couple "l'objet" à la BDD, mais "l'objet"=le data bean. Pour moi, l'objet que sort PDO n'est effectivement pas le City, mais un "CityBean" disons, que le City peut alors accepter comme paramètre de constructeur (en plus de ses autres constructeurs usuels).