Mysql
 sql >> Base de données >  >> RDS >> Mysql

OOP PHP PDO Mon premier projet, est-ce que je fais bien ?

Je commencerais par utiliser model/mapper. C'est un moyen très simple d'obtenir des objets simples et de pouvoir les conserver dans la base de données. Cela évite également de mélanger les appels et le code de la base de données (logique de persistance) avec les fonctionnalités (logique d'application ou métier). Exemple simple :

class User {
    public $id;
    public $username;

}

class UserMapper {
    /**
     * @param User $user
     */
    public function save(User $user) {

        if(isset($user->id)) {
            $statement = "Update users set username = ? where id = ?"
        } else {
            $statement = "insert into users set username = ?, id = ?"
        }
        $instance = db::getInstance();
        $sth = $instance->prepare($statement );
        $values_a = array($user->username, $user->id);
        $db_result = $sth->execute($values_a);
    }

    /**
     * @param int $userId
     * @return User
     */
    public function load($userId) {
        $statement = "select * from users where id = ?";
        $instance = db::getInstance();
        $sth = $instance->prepare($statement );
        $values_a = array($user->id);
        $db_result = $sth->execute($values_a);
        $returnUser = new User();
        $returnUser ->id       = $db_result[0]['id'];
        $returnUser ->username = $db_result[0]['username'];
        return $returnUser;
    }
}

Je recommanderais également d'utiliser des getters/setters, au lieu d'un accès direct aux membres, mais c'était juste pour la simplicité du code... Au fur et à mesure que vous développez plus de modèles/mappers, vous trouverez des fonctionnalités communes de mappeur (sauvegarde, chargement, suppression, recherche) et vous peut refactoriser votre code pour contenir la logique commune afin que vous n'ayez pas un tas de copypasta.