Mysql
 sql >> Database >  >> RDS >> Mysql

OOP PHP PDO Il mio primo progetto, sto facendo bene?

Inizierei usando il modello/mapper. È un modo molto semplice per ottenere oggetti semplici ed essere in grado di mantenerli nel database. Evita inoltre di combinare chiamate e codice del database (logica di persistenza) con funzionalità (applicazione o logica aziendale). Esempio semplice:

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

Consiglierei anche di usare getter/setter, invece dell'accesso diretto ai membri, ma questo era solo per semplicità di codice... Man mano che sviluppi più modelli/mapper troverai funzionalità di mappatura comuni (salvataggio, caricamento, eliminazione, ricerca) e tu puoi refactoring del tuo codice per contenere la logica comune in modo da non avere un mucchio di copypasta.