Banyak kelebihan yang diberikan dari pemrograman berorientasi objek atau OOP. Salah satunya adalah reusable, dimana kode php yang ditulis dapat digunakan kembali, tanpa harus menulis kembali kode php untuk melakukan hal yang sama. Tutorial PHP OOP: Save Edit Delete & Menampilkan Data dengan OOP ini akan dibahas cara menyimpan, menampilkan, mengedit, dan menghapus data menggunakan konsep OOP.
Jika kode ini langsung diubah kedalam konsep OOP, maka akan seperti:
Namun bukan cara ini yang akan digunakan, karena pada saat parameter koneksi seperti host, user database dan password berubah maka class ini harus diubah atau diedit sesuai dengan parameter yang baru. Hal itu bertentangan dengan Open/Closed Principle dimana class terbuka untuk ekstensi/inheritance tapi tertutup untuk modifikasi. Class yang sudah selesai ditulis hanya terbuka untuk modifikasi untuk perbaikan error.
Pada saat parameter koneksi berubah file config.ini lah yang diubah tanpa perlu mengedit class Connect yang dibuat.
Berikut penjelesan singkat dari fungsi getConfig() di atas. Cek apakah parameter $_config masih kosong (file config.ini belum pernah dibaca), jika kosong maka baca file config.ini menggunakan fungsi parse_ini_file dan simpan hasilnya di properti $_config -- baris ke-8 sampai 15. Setelah file config.ini dibaca, cari nilai konfigurasi sesuai dengan parameter $key (baris ke-17).
Fungsi getConnection() di atas pertama-tama mengecek apakah sudah ada koneksi terbuka, jika belum maka konfigurasi dibaca dan koneksi baru ke database dibuat.
Maka kita akan menaruh pensil di kotak pensil, pulpen di kotak pulpen. Secara sederhana seperti itulah proses menyimpan data ke database. Jika ada tabeluser seperti berikut:
maka perlu dilakukan hal yang sama seperti kotak penyimpanan di atas. user_id disimpan di kolom user_id, nama di kolom nama, dan seterusnya. Bagaimana melakukan hal ini dengan kode php? menggunakan associated array, seperti:
bagian kiri tanda => adalah kolom tabel dan bagian kanan adalah nilai yang akan disimpan.
Lalu apa hubungannya dengan kode menyimpan data yang akan dibuat? Mengetahui cara menggunakan kode simpan tersebut dan mengetahui parameter inputan yang digunakan yaitu associated array. Berikut adalah cara membuat kode menyimpan data menggunakan konsep OOP.
Buatlah file Table.php lalu include file Connect.php dan deklarasikan class Table
Tambahkan property $_tableName untuk menyimpan nama tabel dan buat konstruktor class
Buat fungsi connect() dan close() untuk membuka dan menutup koneksi ke database. Dan deklarasikan fungsi save().
dengan fungsi save akan dibuat sebuah sql insert dengan format kurang lebih seperti
INSERT INTO `nama_tabel` SET `nama_kolom1`='nilai 1', `nama_kolom2`='nilai 2';.
Buat kode sql untuk bagian warna merah
buat kode sql bagian bagian warna hijau dan sambungkan dengan dengan bagian warna merah
simpan data menggunakan fungsi mysql_query dan throw Exception jika gagal menyimpan data.
Jika potongan kode di atas digabungkan maka akan menjadi:
Bagaimana cara menggunakan class Tabel di atas untuk menyimpan data, contoh:
UPDATE `nama_tabel` SET `nama_kolom1`='nilai 1', `nama_kolom2`='nilai 2' WHERE `nama_kolom1` = 'test';.
Buka kembali file Tabel.php dan tambahkan fungsi update() dan buat sql bagian warna merah.
buat sql bagian warna hijau dan sambung dengan sql bagian warna merah
buat sql warna biru jika parameter $where tidak kosong
edit data menggunakan fungsi mysql_query dan throw Exception jika proses edit data gagal
jika digabungkan akan menjadi seperti berikut:
Cara menggunakan fungsi update di atas sangat mudah, contoh:
DELETE FROM `nama_tabel` WHERE `nama_kolom`='test'
Untuk membuat kode php untuk menghapus data dengan konsep OOP, sql bagian merah akan menjadi parameter inputan dari fungsi delete() di bawah.
Tambahkan kode delete di atas ke class Tabel di file Tabel.php. Cara penggunaannya sebagai berikut:
kode di atas terlihat sederhana, tapi setiap kali menampilkan data tabel berbeda, harus menulis kode yang mirip berulang ulang kali. Lalu bagaimana cara mengubahnya menjadi berorientasi object? Di php ada sebuah interface standar yang disebut Iterator. Interface Iterator digunakan untuk mengakses atau memanipulasi sebuah array/list. Dengan mengimplementasikan interface Iterator maka class yang dibuat bisa digunakan dalam foreach seperti halnya array. Interface Iterator memiliki 5 fungsi di bawah yang perlu diimplementasikan.
Sekarang buatlah file Select.php dan Class Select untuk mengimplementasikan fungsi interface Iterator di atas.
konstruktor dari class Select menerima inputan sebuah string sql query. Sql query inilah yang akan diproses untuk mengambil data ke tabel database.
Selanjutnya kembali ke class Tabel di file Tabel.php. Tambahkan fungsi findAll() untuk menampilkan seluruh data, dan fungsi findBy() untuk mencari/menampilkan data berdasarkan kolom tertentu.
Jadi kode class Tabel selengkapnya adalah seperti di bawah.
Lalu bagaimana cara menampilkan data dengan konsep OOP, seperti contoh berikut.
Sederhana sekali, hanya buat instant class Tabel dan panggil fungsi findAll() atau fungsi findBy().
Selamat Mencoba dan Berlatih CRUD OOP.
Membuka Koneksi ke Database dengan OOP
Hal pertama yang harus dilakukan sebelum bisa menyimpan data adalah membuka koneksi ke database. Untuk membuka koneksi ke database dengan php, cukuplah mudah. Misal, bisa menggunakan kode sederhana di bawah:
class Connect { public static function getConnection(){ return $koneksi; } }
File Konfigurasi
Jadi apa yang diperlukan agar bisa mengubah parameter koneksi? sebuah file konfigurasi. Dalam tutorial ini akan digunakan sebuah file config.ini untuk menyimpan semua konfigurasi. Pertama buatlah file dengan nama config.ini dan tulis konfigurasi berikut:
;database configuration dbhost="localhost" dbuser="root" dbpassword="blah" dbname="test"
Membaca File Konfigurasi dengan Class Config
Langkah selanjutnya, dibutuhkan sebuah class untuk membaca konfigurasi, maka buatlah sebuah file Config.php dan class Config sebagai berikut.
<?php class Config { public static function getConfig($key){ if(!self::$_config){ if(false === $config){ throw new Exception('Gagal membaca file konfigurasi'); } self::$_config = $config; } return self::$_config[$key]; } } }
Class Connect
Setelah membuat file konfigurasi config.ini kemudian membaca konfigurasi menggunakan class Config. Sekarang saatnya membuka koneksi ke database menggunakan class Connect. Buatlah file Connect.php dan class Connect di bawah:
<?php class Connect { protected static $_connection; public static function getConnection(){ if(!self::$_connection){ $dbhost = Config::getConfig('dbhost'); $dbuser = Config::getConfig('dbuser'); $dbpassword = Config::getConfig('dbpassword'); $dbname = Config::getConfig('dbname'); if(!self::$_connection){ } if(!$result){ } } return self::$_connection; } public static function close(){ if(self::$_connection){ } } }
Menyimpan Data dengan Konsep OOP
Sebelum mulai membuat kode OOP untuk menyimpan data, terlebih dahulu kita akan mempelajari bagaimana proses penyimpanan data. Jika ada sebuah lemari penyimpanan seperti gambar dibawah:Maka kita akan menaruh pensil di kotak pensil, pulpen di kotak pulpen. Secara sederhana seperti itulah proses menyimpan data ke database. Jika ada tabeluser seperti berikut:
Kolom | Tipe Data |
---|---|
user_id | varchar(50) |
nama | varchar(100) |
password | varchar(50) |
tipe | varchar(20) |
'user_id' => 'admin', 'nama' => 'Administrator', 'password' => '123123', 'tipe' => 'USER' )
Lalu apa hubungannya dengan kode menyimpan data yang akan dibuat? Mengetahui cara menggunakan kode simpan tersebut dan mengetahui parameter inputan yang digunakan yaitu associated array. Berikut adalah cara membuat kode menyimpan data menggunakan konsep OOP.
Buatlah file Table.php lalu include file Connect.php dan deklarasikan class Table
<?php class Table {
Tambahkan property $_tableName untuk menyimpan nama tabel dan buat konstruktor class
<?php class Table { protected $_tableName; function __construct($tableName){ // konstruktor $this->_tableName = $tableName; }
Buat fungsi connect() dan close() untuk membuka dan menutup koneksi ke database. Dan deklarasikan fungsi save().
//.......kode sebelumnya ........... public function connect(){ return Connect::getConnection(); } public function close(){ Connect::close(); }
dengan fungsi save akan dibuat sebuah sql insert dengan format kurang lebih seperti
INSERT INTO `nama_tabel` SET `nama_kolom1`='nilai 1', `nama_kolom2`='nilai 2';.
Buat kode sql untuk bagian warna merah
// ... kode sebelumnya ........ $sql = "UPDATE `".$this->_tableName."` SET"; // sql bagian warna merah
buat kode sql bagian bagian warna hijau dan sambungkan dengan dengan bagian warna merah
// ... kode sebelumnya ........ foreach($data as $field => $value){ //sql bagian warna hijau }
simpan data menggunakan fungsi mysql_query dan throw Exception jika gagal menyimpan data.
// ... kode sebelumnya ........ if(!$result){ } } // akhir fungsi save } // akhir class Tabel
Jika potongan kode di atas digabungkan maka akan menjadi:
<?php class Table { protected $_tableName; function __construct($tableName){ $this->_tableName = $tableName; } public function connect(){ return Connect::getConnection(); } public function close(){ Connect::close(); } $sql = "INSERT INTO `".$this->_tableName."` SET"; foreach($data as $field => $value){ } if(!$result){ } } }
Bagaimana cara menggunakan class Tabel di atas untuk menyimpan data, contoh:
include 'Tabel.php'; $table = new Tabel('user'); // user adalah nama tabel $table->connect(); 'user_id' => 'admin', 'nama' => 'Admin', 'password' => '123456', 'tipe' => 'USER' )); $table->close();
Edit Data Menggunakan Konsep OOP
Langkah langkah untuk membuat kode edit data dengan konsep OOP hampir sama dengan simpan data di atas. Fungsi update() yang akan dibuat digunakan untuk membentuk sql kurang lebih seperti:UPDATE `nama_tabel` SET `nama_kolom1`='nilai 1', `nama_kolom2`='nilai 2' WHERE `nama_kolom1` = 'test';.
Buka kembali file Tabel.php dan tambahkan fungsi update() dan buat sql bagian warna merah.
// ....... kode sebelumnya....... $sql = "UPDATE `".$this->_tableName."` SET"; // sql bagian warna merah
buat sql bagian warna hijau dan sambung dengan sql bagian warna merah
// ......... kode sebelumnya ......... foreach($data as $field => $value){ // sql bagian hijau }
buat sql warna biru jika parameter $where tidak kosong
//.......... kode sebelumnya........ if($where){ $sql .= " WHERE ".$where; // sql bagian warna biru }
edit data menggunakan fungsi mysql_query dan throw Exception jika proses edit data gagal
//........ kode sebelumny .......... if(!$result){ } }
jika digabungkan akan menjadi seperti berikut:
//....... kode sebelumnya ......... $sql = "UPDATE `".$this->_tableName."` SET"; foreach($data as $field => $value){ } if($where){ $sql .= " WHERE ".$where; } if(!$result){ } }
Cara menggunakan fungsi update di atas sangat mudah, contoh:
<?php include 'Table.php'; $tabel = new Tabel('user'); $tabel->connect(); 'nama' => 'Administrator', 'password' => '123123' ); $tabel->update($data, "user_id='admin'"); $tabel->close();
Delete Data dengan Konsep OOP
Jika menghapus data dari sebuah tabel database maka digunakan sql query kurang lebih seperti:DELETE FROM `nama_tabel` WHERE `nama_kolom`='test'
Untuk membuat kode php untuk menghapus data dengan konsep OOP, sql bagian merah akan menjadi parameter inputan dari fungsi delete() di bawah.
//....... kode sebelumnya ......... function delete($where = ''){ $sql = "DELETE FROM `".$this->_tableName."`"; if($where){ $sql .= " WHERE ".$where; } if(!$result){ } }
<?php include 'Tabel.php'; $tabel = new Tabel('user'); $tabel->connect(); $table->delete("user_id='admin'"); $table->close();
Menampilkan Data dengan Konsep OOP
Menampilkan data dari sebuah tabel database bisa menggunakan fungsi mysql_fetch_array, mysql_fetch_assoc, atau mysql_fetch_object. Sesuai dengan bahasa tutorial ini, maka fungsi yang sesuai adalah mysql_fetch_object karena fungsi mysql_fetch_object re-return sebuah object. Apakah itu pilihan yang tepat? Coba perhatikan kode menampilkan data berikut:
<?php $sql = "select * from `user`"; echo $user->nama; }
Nama Fungsi | Deskripsi |
---|---|
rewind() | mereset pointer array kembali 0 atau awal |
current() | me-return element dari pointer terkini |
key() | me-return pointer terkini |
next() | me-return element terkini dan memperbaharui pointer |
valid() | memvalidasi bahwa ada element dari pointer terkini |
Sekarang buatlah file Select.php dan Class Select untuk mengimplementasikan fungsi interface Iterator di atas.
<?php class Select implements Iterator{ protected $_query; protected $_sql; protected $_pointer = 0; protected $_numResult = 0; function __construct($sql){ $this->_sql = $sql; } $this->_pointer = 0; } return $this->_pointer; } protected function _getQuery(){ if(!$this->_query){ $connection = Connect::getConnection(); if(!$this->_query){ } } return $this->_query; } protected function _getNumResult(){ if(!$this->_numResult){ } return $this->_numResult; } function valid(){ if($this->_pointer >= 0 && $this->_pointer < $this->_getNumResult()){ return true; } return false; } protected function _getRow($pointer){ return $this->_results[$pointer]; } if($row){ $this->_results[$pointer] = $row; } return $row; } $row = $this->_getRow($this->_pointer); if($row){ $this->_pointer ++; } return $row; } return $this->_getRow($this->_pointer); } function close(){ Connect::close(); } }
konstruktor dari class Select menerima inputan sebuah string sql query. Sql query inilah yang akan diproses untuk mengambil data ke tabel database.
Selanjutnya kembali ke class Tabel di file Tabel.php. Tambahkan fungsi findAll() untuk menampilkan seluruh data, dan fungsi findBy() untuk mencari/menampilkan data berdasarkan kolom tertentu.
// ... kode class Tabel sebelumnya....... function findAll(){ $sql = "SELECT * FROM `".$this->_tableName."`"; return new Select($sql); } function findBy($field, $value){ $sql = "SELECT * FROM `".$this->_tableName."`"; return new Select($sql); }
Jadi kode class Tabel selengkapnya adalah seperti di bawah.
<?php class Table { protected $_tableName; function __construct($tableName){ $this->_tableName = $tableName; } public function connect(){ return Connect::getConnection(); } public function close(){ Connect::close(); } $sql = "INSERT INTO `".$this->_tableName."` SET"; foreach($data as $field => $value){ } if(!$result){ } } $sql = "UPDATE `".$this->_tableName."` SET"; foreach($data as $field => $value){ } if($where){ $sql .= " WHERE ".$where; } if(!$result){ } } function delete($where = ''){ $sql = "DELETE FROM `".$this->_tableName."`"; if($where){ $sql .= " WHERE ".$where; } if(!$result){ } } function findAll(){ $sql = "SELECT * FROM `".$this->_tableName."`"; return new Select($sql); } function findBy($field, $value){ $sql = "SELECT * FROM `".$this->_tableName."`"; return new Select($sql); } }
Lalu bagaimana cara menampilkan data dengan konsep OOP, seperti contoh berikut.
<?php include_once '../Table.php'; $table = new Table('user'); $users = $table->findAll(); ?> <table border="1"> <tr> <th>User Id</th> <th>Name</th> <th>Password</th> <th>Type</th> <th>Action</th> </tr> <?php foreach($users as $user){?> <tr> <td><?php echo $user->user_id;?> <td><?php echo $user->name;?></td> <td><?php echo $user->password?></td> <td><?php echo $user->type?></td> </tr> <?php }?> </table>
Selamat Mencoba dan Berlatih CRUD OOP.
0 komentar