Sabtu, 12 Maret 2011

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();

?>

http://www.kuliahpemrograman.co.cc/search/label/Index%20PHP

0 komentar:

Posting Komentar

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites