Je n'aurais pas mis la requête dans le constructeur, car sinon comment veux-tu créer un nouveau joueur, qui n'existe pas encore dans la base (par exemple à l'inscription) ?
J'aurais plutôt fait un vrai début de Data Object avec :
- les getters (très utile pour faire des traitements avant de renvoyer une valeur)
- les setters (très utile pour faire les vérification avant d'affecter la valeur)
- les loaders (va charger les infos depuis la bdd)
- le saver (sauve l'instance en cours dans la bdd)
ces deux derniers éléments imposant de stocker l'ID dans les attributs de l'objet
Typiquement, l'utilisation donnerait ce genre de codes :
ou J'aurais plutôt fait un vrai début de Data Object avec :
- les getters (très utile pour faire des traitements avant de renvoyer une valeur)
- les setters (très utile pour faire les vérification avant d'affecter la valeur)
- les loaders (va charger les infos depuis la bdd)
- le saver (sauve l'instance en cours dans la bdd)
ces deux derniers éléments imposant de stocker l'ID dans les attributs de l'objet
Typiquement, l'utilisation donnerait ce genre de codes :
Code PHP :
<?php
// Inscription
$player = new Player;
$player->setName($login);
$player->setMail($email);
$player->setPassword($password);
try {
$player->save();
} catch (Exception $e) {
die('Impossible de créer le compte, erreur : ' . $e->getMessage());
}
Code PHP :
<?php
// Identification
$player = new Player;
if ($player->auth($login, $password)) {
// il est loggé
$_SESSION['player_id'] = $player->getId();
}