Senin, 05 Oktober 2009

PHP : Mengapa menggunakan Class dan Object


Pada saat menggunakan aplikasi php buatan orang lain, seringkali programmer php yang baru belajar kesulitan dalam penggunaan object/class. Kesulitan ini bukan hanya karena kesulitan teknis yang sebenarnya dalam php tidak begitu berat. Kesulitan tersebut lebih disebabkan oleh karena masih ada pertanyaan yang menggantung tentang "mengapa harus menggunakan class dan object".

Disini saya akan menjelaskan contoh kongkrit tentang mengapa harus menggunakan object, dan bagaimana cara berpikir dan memandang masalah sebagai suatu object. Tetapi sebagaimana tidak ada gading yang tak retak, maka solusi menggunakan object inipun tidak serta merta menjadikan Object sebagai solusi utama, sehingga harus tetap dilihat kebutuhan yang sesuai dilapangan walaupun solusi berbasis object tetap disarankan.



Untuk yang pertama saya akan menuliskan suatu contoh perbandingan pemrograman dengan object
dan tanpa object (menggunakan function)


misalkan kita ingin membuat object input tanggal
dd mm yy

dalam tulisan sebelumnya , kita telah membuat function combo. function combo hanya berfungsi
menuliskan pilihan dari x - z. Jika kita masih mengandalkan fungsi combo saja maka kita akan terjebak masalah

  1. bagaimana jika combo digunakan untuk edit
    Misalkan, combo harus menampilkan tanggal tertentu. 
  2. Data tanggal pasti dipecah dulu baru diaplikasikan/distribusikan ke combo2 lain.Karena combo berdiri terpisah, maka harus ada penanganan data tanggal yang akan dimunculkan.penanganan ini akan menyita sebagian konsentrasi dan menambah jumlah baris di program utama
  3. Akan memiliki 3 control yang berbeda yang harus ditulis setiap kali ada isian tanggal.Ini disebabkan oleh combo yang berdiri terpisah 
  4. Jika inputan tanggal lebih dari 1 maka masalah = jumlah inputan x 3 :)
Dus, jika nomor 1 - 3 di kalikan dengan jumlah combo yang harus dimunculkan ?
misalkan untuk inputan karyawan membutuhkan 3 field : tgl lahir, tgl masuk kerja, tgl pengangkatan Sudah terbayang kan pusingnya ?

Baik, mungkin ada yang bilang tanpa object pun masalah itu akan selesai. tapi lihat kenyataan nomor 4  apakah anda mau melakukannya ? , saya sendiri akan memilih jumlah kode yang lebih sedikit daripada
harus melakukan kode yang sama berulang - ulang :)

Contoh Kode awal :
Kode ini untuk menampilkan satu tanggal

file : combo.php


<?php

function combo($nama,$mulai,$sampai,$terpilih){

//menampilkan angka dan angka terpilih
$i=0;

$html = "<select name='$nama'>";
for($i=$mulai;$i<=$sampai;$i++){ if($i==$terpilih){ $html.="<option value='$i' selected>$i</option>"; }else{ $html.="<option value='$i'>$i</option>"; } } $html .= ">/select<"; return $html; } ?>




file form.php

<?php

echo combo("tgl",1,31,5);
echo combo("bln",1,12,10);
echo combo("thn",2000,2009,2009);

?>

Contoh Kode dengan mengggunakan class

file : combotgl.class.php


<?php

class comboTgl{

var $dd,$mm,$yy;
var $curcdate;
var $maxday; // jumlah hari dalam bulan
var $name;
var $spanyear;
var $thisday; //curent system date

function comboTgl($nama,$tgl="",$yearupdown=5){

$this->name = $nama;
$this->spanyear = $yearupdown;
$this->thisday = getdate(strtotime(date("d-m-Y")));

//format tgl
if($tgl==""){
$this->curdate = getdate(strtotime(date("d-m-Y")));
}else{
$this->curdate = getdate(strtotime($tgl));
}

$this->dd= $this->curdate['mday'];
$this->mm= $this->curdate['mon'];
$this->yy= $this->curdate['year'];


//pastikan maxday terupdate
$this->maxDay();

}

function maxDay(){
if(checkdate($this->mm,31,$this->yy)){
$this->maxday = 31;
}

if(checkdate($this->mm,30,$this->yy)){
$this->maxday = 30;
}

if(checkdate($this->mm,29,$this->yy)){
$this->maxday = 29;
}

if(checkdate($this->mm,38,$this->yy)){
$this->maxday = 38;
}

}

function renderCombo(){

$tgl = $this->mcombo($this->name."d",1,$this->maxday,$this->dd);
$bln = $this->mcombo($this->name."m",1,12,$this->mm);
$thn = $this->mcombo($this->name."y",($this->yy-$this->spanyear),$this->thisday['year'],$this->yy);

$html = $tgl.$bln.$thn;
return $html;
}


function mcombo($nama,$mulai,$sampai,$selected){

//menampilkan angka dan angka terpilih
$i=0;


$html = ">select name='$nama'>";
for($i=$mulai;$i<=$sampai;$i++){ if($i==$selected){ $html.="<option value='$i' selected>$i</option>"; }else{ $html.="<option value='$i'>$i</option>"; } } $html .= "</select>"; return $html; } } ?>




Contoh Penggunaan Class combotgl


<?php

$cmb = new comboTgl("tgllahir","21-10-1989");
echo $cmb->renderCombo();

?>
 Saya harap dari tulisan ini dapat dimengerti tentang mengapa kita menggunakan Class dan Object sehingga tidak ada lagi halangan/rasa malas dari dalam diri kita untuk mulai belajar menggunakan class dan object tersebut. Happy Coding!

Baca Juga :

Latihan PHP : Fungsi Menampilkan tanggal dengan combo
Mengapa Fungsi Mengapa Prosedur
Semua tentang Fungsi dan Prosedur

5 komentar:

  1. assallammu'alaikum wr wb,sblmnya maaf mngkin mnganggu,bisa mnta tolong ga y,,bikin coding rental mobil menggunakan class dan object trus session pada php,terima kasih....

    BalasHapus
  2. wlkmsalam een. bikin coding gmn ? bikin aplikasi ? kirim aja request ke satiri.a@gmail.com. tq.

    BalasHapus
  3. mksd saya script tuk program penyewaan seperti sewa mobil,memakai class dan object menggunakan session pd php.bisa bikinnya?terima kasih

    BalasHapus

Isi Komentar / Pertanyaan