Saya akan mulai dengan menggunakan model/mapper. Ini adalah cara yang sangat sederhana untuk mendapatkan objek biasa dan dapat menyimpannya ke database. Itu juga menghindari pencampuran panggilan database dan kode (logika ketekunan) dengan fungsionalitas (aplikasi atau logika bisnis). Contoh sederhana:
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;
}
}
Saya juga merekomendasikan menggunakan getter/setter, alih-alih akses anggota langsung, tetapi ini hanya untuk kesederhanaan kode... Saat Anda mengembangkan lebih banyak model/pemeta, Anda akan menemukan fungsionalitas mapper umum (menyimpan, memuat, menghapus, menemukan) dan Anda dapat memfaktorkan ulang kode Anda agar mengandung logika umum sehingga Anda tidak memiliki banyak copypasta.