sql >> Base de Datos >  >> RDS >> Mysql

OOP PHP PDO Mi primer proyecto, ¿lo estoy haciendo bien?

Comenzaría usando model/mapper. Es una forma muy sencilla de obtener objetos sin formato y poder conservarlos en la base de datos. También evita mezclar llamadas y código de base de datos (lógica de persistencia) con funcionalidad (lógica de aplicación o de negocios). Ejemplo sencillo:

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;
    }
}

También recomendaría usar getters/setters, en lugar de acceso directo a los miembros, pero esto fue solo por la simplicidad del código... A medida que desarrolle más modelos/mapeadores, encontrará funciones de mapeo comunes (guardar, cargar, eliminar, encontrar) y puede refactorizar su código para que contenga la lógica común para que no tenga un montón de copypasta.