Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

OOP PHP PDO Meu primeiro projeto, estou fazendo certo?


Eu começaria usando model/mapper. É uma maneira muito simples de obter objetos simples e poder persisti-los no banco de dados. Também evita misturar chamadas de banco de dados e código (lógica de persistência) com funcionalidade (aplicativo ou lógica de negócios). Exemplo simples:
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;
    }
}

Eu também recomendaria usar getters/setters, em vez de acesso direto aos membros, mas isso foi apenas para simplificar o código... pode refatorar seu código para conter a lógica comum para que você não tenha um monte de copypasta.