Anda di halaman 1dari 0

TIS

Disusun oleh:
Rosihan Ari Yuana, S.Si, M.Kom
http://blog.rosihanari.net
Seri Tutorial Praktis Pemrograman Rosihan Ari Yuana
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman $ dari %&
























#ak 'ipta han(a milik Allah a))a *a +alla.
#an(a karena anugerah ,(a lah, ebook tutorial ini bisa ter*u+u! melalui tangan penulis.
"leh karena itu, ti!ak berhak seseorang (ang bermaksu! menge!arkan/men!istribusikan ebook
ini atau menge!it sebagian atau keseluruhan ebook ini tanpa sei+in Allah !an penulisn(a.
-iarlah Allah a))a *a +alla (ang berhak memutuskan atas perkara bagi seseorang (ang
melanggar ketentuan !i atas
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman % dari %&

Da.tar Isi /book

Pendahuluan ........................................................................................................................................... 4
Membuat Class ........................................................................................................................................ 4
Latihan ................................................................................................................................................ 5
Membuat Function/Method dalam Class ................................................................................................. 6
Latihan ................................................................................................................................................ 7
Instantisasi Obye ................................................................................................................................... 7
!ettin" Pro#erties .................................................................................................................................... $
Latihan .............................................................................................................................................. %&
Men'alanan Method ............................................................................................................................ %&
Latihan .............................................................................................................................................. %(
Men"ases Pro#erties ........................................................................................................................... %(
Latihan .............................................................................................................................................. %5
Modularitas Class .................................................................................................................................. %5
Constructor ........................................................................................................................................... %7
)nca#sulation ........................................................................................................................................ %$
Pe*arisan +Inheritance, ......................................................................................................................... (4
Latihan .............................................................................................................................................. (6
!tudi -asus &% . O#erasi /ilan"an den"an OOP ..................................................................................... (7
Latihan .............................................................................................................................................. ($
!tudi -asus &( . -onesi e 0atabase My!1L den"an OOP .................................................................... ($
!tudi -asus &2 . Insert 0ata e 0atabase My!1L den"an OOP .............................................................. 2%
!tudi -asus &4 . Menam#ilan 0ata dari My!1L den"an OOP ............................................................... 2(
!tudi -asus &5 . Ha#us 0ata dari My!1L den"an OOP ........................................................................... 22
!tudi -asus &6 . )dit 0ata dari My!1L den"an OOP .............................................................................. 25
Latihan .............................................................................................................................................. 26
!tudi -asus &7 . Membuat !cri#t Lo"in den"an OOP ............................................................................. 27
Latihan .............................................................................................................................................. 23

Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman 0 dari %&

1. Pendahuluan

/a"i seba"ian oran"4 hususnya #ara #ro"rammer #emula tentunya banya men'um#ai esulitan etia
mencoba beralih dari "aya #emro"raman #rosedural e OOP +Ob'ect Oriented Pro"rammin",. Men"a#a
demiian5 6a... arena etia merea bela'ar #ro"rammin" #ertama ali4 dotrinasi "aya #emro"raman
#rosedural banya dilauan e#ada merea. 7a#i hal ini san"at beralasan arena etia bela'ar
#emro"raman #ertama ali4 merea harus dituntut memahami #ro"ram yan" merea buat secara
al"oritmi. 0alam hal ini "aya #emro"raman #rosedural lah yan" #alin" mudah di#ahami secara
al"oritmi.
0i lain #iha4 OOP sebenarnya #en"emban"an dari "aya #emro"raman #rosedural. Meman" untu OOP
ini san"at disaranan ba"i #ara #ro"rammer yan" sudah memilii le8el ad8anced. Men"a#a OOP
diataan #en"emban"an dari #rosedural5 6a... arena4 selain #en"uasaaan dari sisi al"oritmi4
#ro"rammer OOP ini harus mam#u menyataan #roblem e dalam bentu obye9obye.
!elan'utnya4 'ia :nda bertanya a#aah sulit #roses mi"rasi dari #en"uasaan "aya #emro"raman
#rosedural e "aya #emro"raman OOP5 ;a*abnya adalah 6a... namun ba"ian yan" sulit dari bela'ar OOP
adalah di a*al bela'ar sa'a atau di ba"ian dasar9dasar OOP nya sa'a. !etelah itu... di'amin #asti no
#roblem. !elain itu esulitan #ara #ro"rammer etia mencoba beralih e OOP adalah uran"
di#ahaminya re<erensi beru#a buu9buu yan" beredar di ne"eri ini. Ham#ir ebanyaan buu
men'elasan secara teoritis sa'a4 tan#a adanya #embahasan detil tentan" studi asusnya4 atau
teradan" suatu buu hanya berisi terlalu banya scri#t contoh ta#i misin #en'elasan sehin""a
memba*a budaya co#y #aste tan#a dasar eilmuan dan #emahaman.
=ah.. oleh arena itu dalam eboo ini4 saya aan mencoba men'elasan OOP hususnya di PHP ini
den"an "aya yan" mudah di#ahami Insya :llah. 0en"an men"ede#anan studi asus dihara#an #ara
#embaca eboo ini da#at mendalami onse# OOP ini den"an mudah.
>ntu bisa mem#ela'ari eboo ini4 saya saranan :nda #erdalam dahulu tentan" PHP dasar meli#uti
<unction4 8ariabel4 loo#in"4 dan conditional statement. ;ia belum4 tolon" #ela'ari dulu PHP dasar di
htt#?//blo".rosihanari.net/do*nload9tutorial9#h#9dasar9"ratis
2. Membuat Class

0alam OOP4 sebuah class meru#aan blue#rint dari suatu obye. Mun"in :nda bertanya4 a#a bedanya
class den"an sebuah <unction5 !ebuah class bisa berisi 8ariabel dan <unction. @ariabel yan" terleta di
dalam class4 dinamaan #ro#erty dan <unction yan" ada di dalam sebuah class dinamaan method.
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman 1 dari %&

>ntu membuat sebuah class4 struturnya adalah sbb?
<?php

class namakelas
{
var namavariabel;
.
.
.
}

5A
!eba"ai contoh misalan ita membuat class bernama endaraan
<?php

class kendaraan
{
var $jumlahRoda;
var $warna;
var $bahanBakar;
var $harga;
var $merek;

}

5A
0alam contoh di atas4 yan" meru#aan #ro#erti dari class endaraan adalah? 'umlahBoda4 *arna4
bahan/aar dan har"a.
!ebuah #ro#erties dari suatu class da#at :nda bayan"an seba"ai si<at atau in<ormasi yan" meleat dari
suatu obye. !eba"ai contoh misalan ita #andan" sebuah obye Cmahasis*aD4 maa #ro#erties dari
mahasis*a bebera#a diantaranya adalah? nim4 nama4 alamat4 nama oran" tua4 'urusan4 <aultas dsb.
Latihan
%. /uatlah sebuah elas bernama CbuuD4 emudian delarasian bebera#a #ro#erties dari buu
tersebut4 misalnya? 'udul buu4 #en"aran"4 #enerbit4 tahun tersebut dsb
(. Bancan"lah sebuah elas untu menyataan oran"4 emudian tentuan sendiri #ro#erties nya
dan selan'utnya tulis class tersebut e dalam scri#t PHP.

Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman 2 dari %&

3. Membuat Function/Method dalam Class

!e#erti yan" saya sam#aian sebelumnya4 bah*a dalam sebuah class bisa dibuat <unction. !ebuah
<unction dalam suatu class dinamaan method4 dan sebuah method 'ia ita bayan"an adalah se"ala
hal yan" terait den"an #eer'aan atau #roses yan" da#at diberian #ada suatu obye. !eba"ai contoh
method dalam ehidu#an sehari9hari4 adalah #ada obye seoran" Cmahasis*aD. !ebuah method ita bisa
berian #ada mahasis*a tersebut misalnya? Ctem#uh uliahD. 0i dalam method Ctem#uh uliahD itu
terda#at seran"aian #roses mulai dari
9 re"istrasi uliah
9 iuti uliah
9 iuti u'ian
9 ;ia u'ian tida lulus4 maa ulan"i iuti uliah
Itu seba"ai contoh "ambaran method dalam ehidu#an sehari9hari.
/eriut ini contoh sebuah <unction yan" dibuat dalam sebuah class. Function dalam contoh beriut ini
di"unaan untu menentuan a#aah sebuah endaraan har"anya mahal atau tida. 0i sini endaraan
diataan mahal 'ia har"anya di atas 5& 'uta4 dan 'ia di 5& 'uta e ba*ah diataan murah.
E5#h#
class kendaraan
{
var $jumlahRoda;
var $warna;
var $bahanBakar;
var $harga;
var $merek;

function statusHarga()
{
if ($this->harga > 50000000) $status = 'Mahal';
else $status = 'Murah';
return $status;
}

}

5A
Perhatian #erintah?
Fthis9Ahar"a
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman 3 dari %&

@ariabel Fthis meru#aan built in 8ariabel yan" di"unaan untu men"ases #ro#erties atau method
yan" ada dalam class tersebut. !ehin""a #erintah Fthis9Ahar"a di"unaan untu men"ases atau
membaca #ro#erty dari Fhar"a yan" ada dalam class endaraan.
Catatan?
@ariabel Fstatus dalam <unction statushar"a+, buanlah termasu #ro#erty dari class endaraan arena
tida dide<inisian dalam bentu 8ar FstatusG
Latihan
%. 0ari elas CendaraanD dalam contoh4 tambahan sebuah #ro#erty Ctahun #embuatanD
(. /uatlah <unction dalam elas CendaraanD den"an nama Cda#at!ubsidi+,D untu menentuan
a#aah suatu endaraan menda#at subsidi //M atau tida. -endaraan yan" menda#at subsidi
adalah yan" berbahan baar CPremiumD dan tahun #embuatannya sebelum tahun (&&5.
Function ini mereturn C6aD 'ia menda#at subsidi4 dan C7idaD 'ia tida menda#at subsidi.
2. /uatlah <unction dalam elas CendaraanD den"an nama Char"a!econd+,D untu menentuan
har"a second dari endaraan tersebut. Function ini mereturn har"a second dari endaraan
den"an etentuan?
a. ;ia tahun #embuatan di atas (&&54 maa har"a second nya turun (&H dari har"a aslinya
b. ;ia tahun #embuatan (&&& s/d (&&54 maa har"a second nya turun 2&H dari har"a
aslinya
c. ;ia tahun #embuatan di ba*ah (&&&4 maa har"a second nya turun 4&H dari har"a
aslinya.
4. Instantisasi Obyek

!e#erti yan" telah di'elasan sebelumnya bah*a sebuah class meru#aan blue#rint dari obye. !ebuah
class belum men'adi obye sebelum ita lauan sebuah #roses instantisasi obye.
>ntu melauan instantisasi obye4 #erintahnya adalah sbb?
Fhandle I ne* namaclass+,G
!eba"ai contoh4 misalan ita lauan instantiasi #ada class endaraan
<?php

class kendaraan
{
var $jumlahRoda;
var $warna;
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman 4 dari %&

var $bahanBakar;
var $harga;
var $merek;

function statusHarga()
{
if ($this->harga > 50000000) $status = 'Mahal';
else $status = 'Murah';
return $status;
}

}

$kendaraan1 = new kendaraan();

5A
;ia scri#t di atas di'alanan4 maa di bro*ser tida muncul a#a9a#a. Hal ini ter'adi arena ita belum
menyuruh PHP untu melauan sesuatu #ada obye Fendaraan% tersebut.
@ariabel Fendaraan% dalam hal ini dinamaan ChandleD arena ita aan "unaan Fendaraan% untu
men"ontrol dan men""unaan obye endaraan.
Oya4 ita 'u"a bisa melauan instantisasi obye tan#a men""unaan urun"4 #erhatian contoh beriut
ini yan" menun'uan #roses instantisasi bebera#a obye dari class endaraan.
<?php

class kendaraan
{
var $jumlahRoda;
var $warna;
var $bahanBakar;
var $harga;
var $merek;

function statusHarga()
{
if ($this->harga > 50000000) $status = 'Mahal';
else $status = 'Murah';
return $status;
}

}

$kendaraan1 = new kendaraan();
$kendaraan2 = new kendaraan;
$kendaraan3 = new kendaraan();

?>
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman & dari %&

5. ettin! P"o#e"ties

!etelah suatu obye ita lauan instantitasi4 selan'utnya ita bisa mensettin" #ro#erties dari obye
tersebut. !eba"ai contoh4 misalan ita telah membuat obye Fendaraan%4 emudian ba"aimana ita
menset #ro#erti har"a dan mere dari obye Fendaraan% ini5
-ita da#at mensettin" #ro#erties dari suatu obye den"an #erintah?
Fnamaobye9A#ro#erti I 8alueG
Perhatian contoh beriut ini?
<?php

class kendaraan
{
var $jumlahRoda;
var $warna;
var $bahanBakar;
var $harga;
var $merek;

function statusHarga()
{
if ($this->harga > 50000000) $status = 'Mahal';
else $status = 'Murah';
return $status;
}

}

$kendaraan1 = new kendaraan();
$kendaraan1->merek = 'Yamaha MIO';
$kendaraan1->harga = 10000000;

5A
Perintah
Fendaraan%9Amere I J6amaha MIOJG
0i"unaan untu mensettin" #ro#erti mere C6amaha MIOD dari obye Fendaraan%.
-ita 'u"a bisa men""unaan method untu #roses settin" #ro#erti ini4 dan ini adalah cara yan" lebih
direomendasian dalam OOP.
<?php

Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman 56 dari %&

class kendaraan
{
var $jumlahRoda;
var $warna;
var $bahanBakar;
var $harga;
var $merek;

function statusHarga()
{
if ($this->harga > 50000000) $status = 'Mahal';
else $status = 'Murah';
return $status;
}

function setMerek($x)
{
$this->merek = $x;
}

function setHarga($x)
{
$this->harga = $x;
}

}

$kendaraan1 = new kendaraan();
$kendaraan1->setMerek('Yamaha MIO');
$kendaraan1->setHarga(10000000);

5A
Latihan
0ari class CendaraanD di atas4 buatlah obye den"an bebera#a #ro#erti sbb
"b(ek Merek 7ml Ro!a #arga 8arna -hn -akar
Fendaraan( 7oyota 6aris 4 %6&.&&&.&&& Merah Premium
Fendaraan2 Honda !coo#y ( %2.&&&.&&& Putih Premium
Fendaraan4 IsuKu Panther 4 %7&.&&&.&&& Hitam !olar
$. Men%alankan Method

0alam ba"ian ini4 aan di'elasan cara men'alanan sebuah method dari suatu obye. In"at4 bah*a
men'alanan sebuah method dari suatu obye #ada intinya adalah meman""il <unction yan" dalam
class.
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman 55 dari %&

!ebenarnya4 dalam contoh sebelumnya sudah diberian contoh untu men'alanan method yaitu salah
satunya melalui #erintah
$kendaraan1->setMerek('Yamaha MIO');

Perintah tersebut adalah men'alanan method setMere+, dari obye Fendaraan%4 dan dalam hal ini
setMere+, adalah sebuah <unction dalam class endaraan.
Contoh yan" lain4 misalan ita aan men'alanan method statusHar"a+, yan" di"unaan untu
menam#ilan status har"anya a#aah termasu mahal atau murah.
<?php

class kendaraan
{
var $jumlahRoda;
var $warna;
var $bahanBakar;
var $harga;
var $merek;

function statusHarga()
{
if ($this->harga > 50000000) $status = 'Mahal';
else $status = 'Murah';
return $status;
}

function setMerek($x)
{
$this->merek = $x;
}

function setHarga($x)
{
$this->harga = $x;
}

}

$kendaraan1 = new kendaraan();
$kendaraan1->setMerek('Yamaha MIO');
$kendaraan1->setHarga(10000000);
echo $kendaraan1->statusHarga();

5A
;ia scri#t di atas di'alanan4 maa aan muncul CMurahD4 arena har"a nya uran" dari 5&.&&&.&&&.
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman 5$ dari %&

Perhatian dari bebera#a contoh #eman""ilan method di atas4 bah*a setia# ali #eman""ilan method
'an"an lu#a memberi tanda urun" +,4 se#erti #ada
Fendaraan%9AsetHar"a+%&&&&&&&,G
:tau
Fendaraan%9AstatusHar"a+,G
-arena urun" tersebut di"unaan untu meletaan #arameter ba"i method tersebut.
Latihan
%. Perhatian embali soal latihan sebelumnya #ada bab 5. 7am#ilan status har"a dari
Fendaraan(4 Fendaraan2 dan Fendaraan4.
(. Perhatian embali soal latihan #ada bab 2 nomor 2. 7am#ilan har"a second dari Fendaraan(4
Fendaraan2 dan Fendaraan4.
&. Men!akses P"o#e"ties

!earan" aan di'elasan ba"aimana cara men"ases #ro#erties dari suatu obye. !ebelumnya4 #ernah
saya ataan bah*a #ro#erties dari suatu obye itu meru#aan 8alue dari 8ariabel yan" ada dalam class.
/a"aimana cara men"ases #ro#erties dari suatu obye5 Perhatian contoh beriut ini
<?php

class kendaraan
{
var $jumlahRoda;
var $warna;
var $bahanBakar;
var $harga;
var $merek;

function statusHarga()
{
if ($this->harga > 50000000) $status = 'Mahal';
else $status = 'Murah';
return $status;
}

function setMerek($x)
{
$this->merek = $x;
}
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman 5% dari %&


function setHarga($x)
{
$this->harga = $x;
}

}

$kendaraan1 = new kendaraan();
$kendaraan1->setMerek('Yamaha MIO');
$kendaraan1->setHarga(10000000);
echo 'Harga dari '.$kendaraan1->merek.' adalah Rp. '.$kendaraan1->harga;

5A
Perhatian #ada ba"ian #erintah
Fendaraan%9Ahar"a
dan
Fendaraan%9Amere
-edua #erintah di atas adalah di"unaan untu men"ases 8alue dari #ro#erty obye Fendaraan%4
yaitu CmereD dan Char"aD. ;ia scri#t di atas di'alanan4 maa aan di#eroleh out#ut
LHar"a dari 6amaha MIO adalah B#. %&&&&&&&M
!elain cara di atas4 da#at #ula men""unaan method dalam membaca #ro#erties dari suatu obye4 dan
cara inilah yan" #alin" disaranan dalam OOP. Perhatian contoh beriut ini
<?php

class kendaraan
{
var $jumlahRoda;
var $warna;
var $bahanBakar;
var $harga;
var $merek;

function statusHarga()
{
if ($this->harga > 50000000) $status = 'Mahal';
else $status = 'Murah';
return $status;
}

function setMerek($x)
{
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman 50 dari %&

$this->merek = $x;
}

function setHarga($x)
{
$this->harga = $x;
}

function bacaMerek()
{
return $this->merek;
}

function bacaHarga()
{
return $this->harga;
}
}

$kendaraan1 = new kendaraan();
$kendaraan1->setMerek('Yamaha MIO');
$kendaraan1->setHarga(10000000);
echo 'Harga dari '.$kendaraan1->bacaMerek().' adalah Rp. '.$kendaraan1-
>bacaHarga();

5A
0alam contoh di atas4 untu men"ases #ro#erti mere dibuat <unction sbb
function bacaMerek()
{
return $this->merek;
}

Sedangkan function untuk mengakses properti harga kendaraan adalah

function bacaHarga()
{
return $this->harga;
N
!elan'utnya untu men"ases #ro#erti nama mere endaraan4 cuu# di#an""il sa'a method
bacaMere+, sbb?
Fendaraan%9AbacaMere+,
0emiian #ula untu men"ases #ro#erti har"a endaraan melalui method bacaHar"a+,G
Fendaraan%9AbacaHar"a+,
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman 51 dari %&

Latihan
Perhatian embali soal latihan #ada bab 54 berdasaran obye yan" telah dibuat4 tam#ilan #ro#erti
setia# obye sedemiian hin""a tam#ilan scri#t a#abila di'alanan di bro*ser seba"ai beriut?
-endaraan To(ota Yaris4 memilii 0 roda4 berbahan baar Premium dan har"anya B#
526666666.
-endaraan #on!a S'oop(4 memilii $ roda4 berbahan baar Premium dan har"anya B#
5%666666.
-endaraan Isu)u Panther4 memilii 0 roda4 berbahan baar !olar dan har"anya B# 536666666.
'. Modula"itas Class

Pada contoh9contoh scri#t di atas4 class dan 'u"a #roses instantisasi di'adian satu dalam sebuah scri#t.
Hal ini dirasa uran" e<eti< a#abila class tersebut 'u"a di"unaan dalam scri#t yan" lain nantinya.
!ehin""a untu alasan emudahan #en""unaan4 biasanya sebuah class atau um#ulan class diletaan
dalam sebuah scri#t tersendiri4 yan" selan'utnya tin""al di include an dalam sebuah scri#t a#abila class
tersebut aan di"unaan. 0en"an demiian ita tida #erlu menulis embali isi class secara #enuh dalam
setia# scri#tnya.
!eba"ai contoh4 #erhatian embali contoh scri#t #ada bab 7 yan" berbentu sbb?
<?php

class kendaraan
{
var $jumlahRoda;
var $warna;
var $bahanBakar;
var $harga;
var $merek;

function statusHarga()
{
if ($this->harga > 50000000) $status = 'Mahal';
else $status = 'Murah';
return $status;
}

function setMerek($x)
{
$this->merek = $x;
}

function setHarga($x)
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman 52 dari %&

{
$this->harga = $x;
}

function bacaMerek()
{
return $this->merek;
}

function bacaHarga()
{
return $this->harga;
}
}

$kendaraan1 = new kendaraan();
$kendaraan1->setMerek('Yamaha MIO');
$kendaraan1->setHarga(10000000);
echo 'Harga dari '.$kendaraan1->bacaMerek().' adalah Rp. '.$kendaraan1-
>bacaHarga();

5A
-ita da#at memisahan class CendaraanD ini dalam <ile tersendiri misalan diberinama Cclass9
endaraan.#h#D yan" isinya
'lass9ken!araan.php
<?php

class kendaraan
{
var $jumlahRoda;
var $warna;
var $bahanBakar;
var $harga;
var $merek;

function statusHarga()
{
if ($this->harga > 50000000) $status = 'Mahal';
else $status = 'Murah';
return $status;
}

function setMerek($x)
{
$this->merek = $x;
}

function setHarga($x)
{
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman 53 dari %&

$this->harga = $x;
}

function bacaMerek()
{
return $this->merek;
}

function bacaHarga()
{
return $this->harga;
}
}
5A
!elan'utnya ita include an <ile class9endaraan.#h# ini e dalam scri#t lain a#abila ita
memerluannya4
'ontoh.php
<?php
include 'class-kendaraan.php';

$kendaraan1 = new kendaraan();
$kendaraan1->setMerek('Yamaha MIO');
$kendaraan1->setHarga(10000000);
echo 'Harga dari '.$kendaraan1->bacaMerek().' adalah Rp. '.$kendaraan1-
>bacaHarga();
5A
(. Const"ucto"

Perhatian embali #roses instantisasi yan" ada di bab 4 dan settin" #ro#erties di bab 5. ;ia ita
#erhatian4 maa #roses instantisasi dan settin" #ro#erties ini dilauan secara ter#isah. 7entu sa'a
#roses ini a"a terlalu bertele9tele. 7ernyata ita bisa lan"sun" melauan instantisasi obye seali"us
melauan settin" #ro#ertiesnya. Proses ini da#at dilauan den"an men""unaan CconstructorD.
>ntu membuat constructor4 ita cuu# membuat sebuah <unction dalam class den"an bentu
function __construct (parameter)
{
.
.
.
N
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman 54 dari %&

-eteran"an? 7anda OO meru#aan tanda underscore +O, yan" ditulis double.
/eriut ini contoh constructor untu obye endaraan4 dimana seali"us mensettin" #ro#erti CmereD
dan Char"aD endaraan.
'lass9ken!araan.php
<?php

class kendaraan
{
var $jumlahRoda;
var $warna;
var $bahanBakar;
var $harga;
var $merek;

function statusHarga()
{
if ($this->harga > 50000000) $status = 'Mahal';
else $status = 'Murah';
return $status;
}

function setMerek($x)
{
$this->merek = $x;
}

function setHarga($x)
{
$this->harga = $x;
}

function bacaMerek()
{
return $this->merek;
}

function bacaHarga()
{
return $this->harga;
}

function __construct($x, $y)
{
$this->merek = $x;
$this->harga = $y;
}
}
5A
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman 5& dari %&

Perhatian
function __construct($x, $y)
{
$this->merek = $x;
$this->harga = $y;

}

Function tersebut ita buat ( #arameter4 dimana FP menyataan mere endaraan4 dan Fy adalah
har"anya. !elan'utnya4 #erintah
Fthis9Amere I FPG
0i"unaan untu settin" #ro#erty mere endaraan berdasaran nilai FP. 0emiian 'u"a #erintah
Fthis9Ahar"a I FyG
>ntu settin" #ro#erty har"a endaraan berdasaran nilai Fy.
!elan'utnya4 ba"aimana cara melauan instantisasi seali"us settin" #ro#ertiesnya5 Perhatian scri#t
beriut ini.
'ontoh.php
<?php
include 'class-kendaraan.php';

$kendaraan1 = new kendaraan('Yamaha MIO', 10000000);

echo 'Harga dari '.$kendaraan1->bacaMerek().' adalah Rp. '.$kendaraan1-
>bacaHarga();
5A
1). *nca#sulation

0i dalam dasar9dasar OOP4 ada istilah enca#sulation. Istilah ini terait den"an asesibilitas #ro#erties
dalam suatu class. 0en"an enca#sulation ini4 ita bisa men"atur sebuah #ro#erti a#aah hanya bisa
diases dalam class tersebut sa'a4 atau tida.
:sesibilitas #ro#erties dalam enca#sulation ini ada ti"a si<at?
Public ? #ro#erti da#at diases darimana#un
Pri8ate ? #ro#erti hanya da#at diases dari dalam class sa'a
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman $6 dari %&

Protected ? #ro#erti hanya da#at diases dari dalam class atau class turunan +inheritanced
class,
>ntu membedaan eti"anya4 #erhatian contoh beriut ini
class9endaraan.#h#
<?php

class kendaraan
{
protected $jumlahRoda;
public $warna;
public $bahanBakar;
public $harga;
private $merek;

function statusHarga()
{
if ($this->harga > 50000000) $status = 'Mahal';
else $status = 'Murah';
return $status;
}

function setMerek($x)
{
$this->merek = $x;
}

function setHarga($x)
{
$this->harga = $x;
}

function bacaMerek()
{
return $this->merek;
}

function bacaHarga()
{
return $this->harga;
}

function __construct($x, $y)
{
$this->merek = $x;
$this->harga = $y;
}
}
5A
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman $5 dari %&

Perhatian class di atas. >ntu #ro#erti C*arnaD4 Cbahan baarD dan Char"aD dibuat seba"ai #ublic
#ro#erties. !edan"an untu #ro#erti C'umlahBodaD dan CmereD4 masin"9masin" seba"ai #rotected dan
#ri8ate #ro#erties. !elan'utnya4 #erhatian scri#t contoh beriut ini
contoh.#h#
<?php
include 'class-kendaraan.php';

$kendaraan1 = new kendaraan('Yamaha MIO', 10000000);
echo 'Nama merek : '.$kendaraan1->merek;

5A
0alam scri#t di atas4 setelah #roses instantisasi dan settin" #ro#erti untu obye Fendaraan%4 aan
dilauan #en"asesan e #ro#erti mere secara lan"sun" +tan#a method,4 den"an memberian
#erintah
Fendaraan%9Amere
:#a yan" ter'adi 'ia scri#t di atas di'alanan5 7ernyata aan muncul error
:atal error? Cannot access #ri8ate #ro#erty endaraan??Fmere
Hal ini ter'adi arena #ro#erti mere bersi<at #ri8ate4 sehin""a #ro#erti ini tida bisa diases dari luar
class.
/a"aimana den"an ases e #ro#erti har"a secara lan"sun"5 Perhatian scri#t beriut ini
contoh.#h#
<?php
include 'class-kendaraan.php';

$kendaraan1 = new kendaraan('Yamaha MIO', 10000000);
echo 'Harga : '.$kendaraan1->harga;

5A
7ernyata 'ia scri#t di atas di'alanan4bisa memunculan har"a dari 6amaha Mio.
=ah... yan" men'adi #ertanyaan4 a#aah bisa ita men"ases sebuah #ro#erti yan" si<atnya #ri8ate
dalam class dari luar5 ;a*abnya adalah bisa4 namun tida dilauan secara lan"sun" den"an men"ases
#ro#erti nya namun men""unaan method. !eba"ai contoh4 misalan ita in"in men"ases #ro#erti
mere yan" si<atnya #ri8ate4 maa ita bisa men""unaan method bacaMere+,.
contoh.#h#
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman $$ dari %&

<?php
include 'class-kendaraan.php';

$kendaraan1 = new kendaraan('Yamaha MIO', 10000000);
echo 'Harga : '.$kendaraan1->bacaMerek();

5A
Oya4 ba"aimana den"an delarasi #ro#erties men""unaan C8arD se#erti #ada contoh9contoh di a*al4
misalnya?
class kendaraan
{
var $jumlahRoda;
var $warna;
var $bahanBakar;
var $harga;
var $merek;
.
.
.
N
Pen""unaan C8arD di de#an nama #ro#erties4 secara otomatis aan bersi<at seba"ai #ublic.
/eriutnya4 muncul #ertanyaan a#aah yan" bisa dibuat enca#sulation d" si<at #ri8ate4 #rotected dan
#ublic ini hanya untu #ro#erties sa'a5 ;a*abnya adalah 7I0:-4 sebuah <unction atau method #un bisa
ditera#an hal ini. !eba"ai contoh misalan ita buat method statusHar"a+, seba"ai #ri8ate method.
class9endaraan.#h#
<?php

class kendaraan
{
protected $jumlahRoda;
public $warna;
public $bahanBakar;
public $harga;
private $merek;

private function statusHarga()
{
if ($this->harga > 50000000) $status = 'Mahal';
else $status = 'Murah';
return $status;
}

function setMerek($x)
{
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman $% dari %&

$this->merek = $x;
}

function setHarga($x)
{
$this->harga = $x;
}

function bacaMerek()
{
return $this->merek;
}

function bacaHarga()
{
return $this->harga;
}

function __construct($x, $y)
{
$this->merek = $x;
$this->harga = $y;
}
}
5A
-emudian ita ce4 a#aah e<e 'ia sebuah method dibuat #ri8ate den"an meman""il method
statusHar"a+, di dalam scri#t.
contoh.#h#
<?php
include 'class-kendaraan.php';

$kendaraan1 = new kendaraan('Yamaha MIO', 10000000);
echo 'Status harga : '.$kendaraan1->statusHarga();

5A
;ia scri#t di atas di'alanan4 maa aan muncul #esan error sbb?
:atal error? Call to #ri8ate method endaraan??statusHar"a+, <rom contePt JJ
6an" men"in<ormasian bah*a method statusHar"a+, bersi<at #ri8ate sehin""a tida bisa diases dari
luar class.

Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman $0 dari %&

11. Pe+a"isan ,Inhe"itance-

Perhatian embali class CendaraanD4 selan'utnya ba"aimana 'ia ita in"in membuat obye baru aan
teta#i obye ini nanti beru#a Cereta a#iD 5 -husus ereta a#i ini nanti4 ada #ro#erti yan" di"unaan
untu menyataan 'umlah "erbon". !edan"an #ro#erti yan" lain se#erti mere4 'umlah roda4 har"a dan
bahan baar sama se#erti dalam class endaraan. Oleh arena itu untu obye ereta a#i ini ita #erlu
membuat class baru yan" meru#aan #en"emban"an dari class endaraan.
0alam OOP4 ita tida #erlu la"i membuat class baru ini4 ta#i cuu# ita membuat class baru yan"
meru#aan turunan atau *arisan dari class sebelumnya. Class turunan ini4 aan memilii #ro#erti dan
method yan" sama se#erti class #e*arisnya4 namun terda#at #ro#erti atau method tambahan husus
untu class ini. Istilah #e*arisan class ini dalam OOP dinamaan inheritance.
/a"aimana cara membuat class turunan ini5
class namaclassbaru extends namaclasslama
{
.
.
.
}

!eba"ai contoh #erhatian scri#t beriut ini
class9endaraanG
<?php

class kendaraan
{
protected $jumlahRoda;
public $warna;
public $bahanBakar;
public $harga;
private $merek;

private function statusHarga()
{
if ($this->harga > 50000000) $status = 'Mahal';
else $status = 'Murah';
return $status;
}

function setMerek($x)
{
$this->merek = $x;
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman $1 dari %&

}

function setHarga($x)
{
$this->harga = $x;
}

function bacaMerek()
{
return $this->merek;
}

function bacaHarga()
{
return $this->harga;
}

function __construct($x, $y)
{
$this->merek = $x;
$this->harga = $y;
}
}

class keretaApi extends kendaraan
{
public $jumGerbong;

function setGerbong($x)
{
$this->jumGerbong = $x;
}

function bacaGerbong()
{
return $this->jumGerbong;
}

}
?>

Perhatian class Cereta:#iD yan" meru#aan turunan dari class CendaraanD dalam scri#t di atas. 0alam
class tersebut4 dibuat #ro#erti bernama C'umQerbon"D +'umlah "erbon",. !elain itu4 husus untu class
Cereta:#iD ini dibuat 'u"a method untu mensettin" #ro#erti 'umQerbon" ini den"an nama
setQerbon"+,4 serta method bacaQerbon"+, untu men"ases #ro#erti 'umlah "erbon".
!elan'utnya #erhatian scri#t yan" di dalamnya ada #roses instantisasi obye ereta a#i ini4 settin"
#ro#erties serta meman""il method.
<?php
include 'class-kendaraan.php';
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman $2 dari %&


$kereta1 = new keretaApi('KA Lokomotif', 15000000);
$kereta1->setGerbong(20);
echo 'Jumlah gerbong dari '.$kereta1->bacaMerek().
' yang seharga '.$kereta1->bacaHarga().
' adalah '.$kereta1->bacaGerbong();

?>

;ia scri#t tersebut di#erhatian4 maa terda#at constructor #ada class ereta:#i dimana da#at
dilauan instantisasi seali"us settin" #ro#erties untu nama mere dan har"anya. Men"a#a o bisa5
6a... arena class ereta:#i adalah turunan dari class endaraan4 dimana di dalam class endaraan
terda#at constructor4 sehin""a untu class ereta:#i ini#un da#at dilauan hal yan" sama.
!elan'utnya diberian #erintah
$kereta1->setGerbong(20);

Perintah tersebut aan mensettin" #ro#erties 'umlah "erbon" #ada obye Fereta%.
!elain itu4 #erintah untu meman""il method bacaMere+, dan bacaHar"a+, #un 'u"a da#at dilauan
arena class ereta:#i meru#aan turunan dari class endaraan.
:da#un out#ut di bro*ser a#abila scri#t tersebut di'alanan adalah sbb?
L;umlah "erbon" dari -: Loomoti< yan" sehar"a %5&&&&&& adalah (&M
Latihan
%. 0alam scri#t Cclass9endaraan.#h#D4 buatlah class baru bernama C#esa*atD yan" meru#aan
turunan dari class endaraan
(. 0alam class C#esa*atD yan" telah dibuat4 de<inisian sebuah #ro#erti Ctin""iMasD den"an si<at
#ri8ate untu menyataan etin""ian masimum #esa*at dan Cece#atanMasD den"an si<at
#ri8ate untu menyataan ece#atan masimum #esa*at
2. 0alam class C#esa*atD4 buatlah sebuah method bernama set7in""iMas+, untu mensettin"
#ro#erti Ctin""iMasD dan set-ece#atanMas+, untu settin" #ro#erti ece#atan masimum
#esa*at.
4. 0alam class C#esa*atD4 buatlah method bernama baca7in""iMas+, untu men"ases #ro#erti
Ctin""iMasD.
5. 0alam class C#esa*atD4 buatlah method bernama biayaO#erasional+, untu menentuan biaya
o#erasional #esa*at4 dimana untu men"hitun" biaya ini ter"antun" dari har"a #esa*at yaitu
dirumusan?

Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman $3 dari %&

9 ;ia tin""i masimum #esa*at lebih dari 5&&& <eet dan ece#atan mas lebih dari 3&&
m/'am4 maa biaya o#erasional I 2&H dari har"a #esa*at
9 ;ia tin""i masimum #esa*at 2&&&95&&& <eet dan ece#atan mas 5&& . 3&& m/'am4 maa
biaya o#erasional I (&H dari har"a #esa*at
9 ;ia tin""i masimum #esa*at uran" dari 2&&& <eet dan ece#atan mas uran" dari 5&&
m/'am4 maa biaya o#erasional I %&H dari har"a #esa*at
9 !elain itu4 biaya o#erasionalnya I 5H dari har"a #esa*at

6. /erdasaran etentuan #ada nomor % s/d 54 tentuan biaya o#erasional dari #esa*at9#esa*at
ini

Mere Pesa*at Har"a +'uta, 7in""i Mas +<eet, -ece#t Mas +m/'am,
/oein" 727 (.&&& 75&& 65&
/oein" 747 2.5&& 53&& 75&
Cassa 75& 25&& 5&&

Contoh tam#ilan out#ut yan" dihara#an adalah seba"ai beriut

/iaya o#erasional #esa*at C/oein" 727D den"an har"a B# (.&&&.&&&.&&& yan" memilii tin""i
masimum 75&& <eet dan ece#atan masimum 65& m/'am adalah B#. RRRRRRR
12. tudi .asus )1 / O#e"asi 0ilan!an den!an OOP

Pada studi asus yan" #ertama ini4 ita aan mencoba membuat scri#t o#erasi bilan"an yaitu
men'umlahan dan men"alian dua bilan"an dalam #ers#eti< OOP.
Misalan untu im#lementasi asus ini4 ita aan buat class bernama Co#erasi/ilan"anD. 0i mana nanti
aan memilii dua #ro#erties4 yaitu bilan"an % dan bilan"an (. -edua bilan"an itu nanti aan
dio#erasian melalui method9method4 yaitu method untu men'umlahan dan men"alian.
>ntu memudahan im#lementasi4 ada bainya ita buat constructor su#aya #roses instantisasi dan
settin" #ro#erties bilan"an % dan bilan"an ( nya bisa dilauan dalam satu #erintah sa'a.
0ari desain senario tersebut4 ita bisa buat scri#tnya sbb?
asus9&%.#h#
<?php

class operasiBilangan
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman $4 dari %&

{
// properties dari class
private $bilangan1;
private $bilangan2;

// constructor
function __construct($x, $y)
{
$this->bilangan1 = $x;
$this->bilangan2 = $y;
}

// method untuk membaca properti bilangan1
function bacaBilangan1()
{
return $this->bilangan1;
}

// method untuk membaca properti bilangan2
function bacaBilangan2()
{
return $this->bilangan2;
}

// method untuk menjumlahkan bilangan1 dan bilangan2
function jumlahkan()
{
$hasil = $this->bilangan1 + $this->bilangan2;
return $hasil;
}

// method untuk mengalikan bilangan1 dan bilangan2
function kalikan()
{
$hasil = $this->bilangan1 * $this->bilangan2;
return $hasil;
}
}

// instantisasi dan setting properties
$operasi1 = new operasiBilangan(4, 5);

// menampilkan hasil penjumlahan
echo '<p>Hasil penjumlahan '.$operasi1->bacaBilangan1().' dan '.$operasi1-
>bacaBilangan2().' adalah '.$operasi1->jumlahkan().'</p>';

// menampilkan hasil perkalian
echo '<p>Hasil perkalian '.$operasi1->bacaBilangan1().' dan '.$operasi1-
>bacaBilangan2().' adalah '.$operasi1->kalikan().'</p>';

?>

Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman $& dari %&

!cri#t di atas di"unaan untu men'umlahan dan men"alian bilan"an 4 dan 5.
Latihan
%. 7ambahan method baru bernama Curan"anD #ada class o#erasi/ilan"an untu melauan
#roses #en"uran"an bilan"an % terhada# bilan"an (.
(. 7ambahan method baru bernama CmoduloD #ada class o#erasi/ilan"an untu men"hitun" hasil
modulo bilan"an % terhada# bilan"an (.
2. 7ambahan method baru bernama C#an"atD #ada class o#erasi/ilan"an untu men"hitun" hasil
bilan"an % di#an"atan bilan"an (.
13. tudi .asus )2 1 .oneksi ke 2atabase My3L den!an OOP

>ntu studi asus ali ini4 ita aan mencoba men"im#lementasian OOP ini #ada scri#t PHP yan"
terait den"an mana"ement data dalam database4 hususnya My!1L. 0en"an scri#t OOP nantinya ita
aan melauan insert data e My!1L4 ha#us data4 edit data dan menam#ilan data. Pembahasan hal ini
nanti aan diba"i e bebera#a bab4 mulai !tudi -asus &( s/d !tudi -asus &6.
!eba"ai contoh asus4 nantinya ita buat database untu e#erluan atalo" buu. /eriut ini strutur
tabel nya?
CREATE TABLE `buku` (
`id` int(11) AUTO_INCREMENT,
`judul` text,
`pengarang` varchar(200),
`penerbit` varchar(200),
`tahunTerbit` varchar(4),
PRIMARY KEY (`id`)
)

!ehin""a untu !tudi -asus &( s/d !tudi -asus &6 ita aan men""unaan tabel CbuuD di atas.
Pada studi asus &( ini4 ita aan coba membuat scri#t PHP untu onesi e My!1L den"an
men""unaan OOP.
Class yan" nanti aan ita buat4 misalnya diberinama CdatabaseD4 dan beriut ini adalah tabel #ro#erties
dan method yan" aan ita buat
=ama 7i#e !i<at -eteran"an
dbHost Pro#erti Pri8ate =ama host My!1L
db>ser Pro#erti Pri8ate >sername My!1L
dbPass Pro#erti Pri8ate Pass*ord My!1L
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman %6 dari %&

db=ame Pro#erti Pri8ate =ama database My!1L
connectMy!1L+, Method Public Melauan onesi e database My!1L

-eteran"an?
>ntu menentuan si<at #ro#erties dan method4 a#aah #ri8ate4 #ublic atau #rotected sebenarnya tida
ada etentuan #asti. !emuanya terserah e#ada :nda dalam menentuannya. Intinya adalah 'ia :nda
in"in #ro#erties atau method bisa di#an""il dari luar class4 maa buat seba"ai Public. 7a#i alau tida4
cuu# dibuat #ri8ate sa'a.
/eriut ini adalah scri#t class CdatabaseD nya
asus&(9class.#h#
<?php

class database
{
// properties
private $dbHost;
private $dbUser;
private $dbPass;
private $dbName;

// constructor
function __construct($a, $b, $c, $d)
{
$this->dbHost = $a;
$this->dbUser = $b;
$this->dbPass = $c;
$this->dbName = $d;
}

// method koneksi mysql
function connectMySQL()
{
mysql_connect($this->dbHost, $this->dbUser, $this->dbPass);
mysql_select_db($this->dbName);
}
}

?>

Perhatian class di atas4 di dalam class ita buat constructor. Pembuatan constructor ini tida *a'ib4 dan
ini sua9sua si #embuat scri#t ?9, Pembuatan constructor ini bertu'uan untu memudahan dalam
#roses instantisasi dan settin" #ro#ertiesnya sa'a.
/eriutnya4 ita bisa "unaan scri#t class di atas untu melauan onesi e My!1L.
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman %5 dari %&

asus&(.#h#
<?php
include 'kasus02-class.php';

// parameter koneksi mysql
$host = 'localhost';
$user = 'root';
$pass = '';
$mydb = 'test';

// instantitasi dan setting properties obyek database
$db = new database($host, $user, $pass, $mydb);

// koneksi ke mysql via method
$db->connectMySQL();

?>

14. tudi .asus )3 1 Inse"t 2ata ke 2atabase My3L den!an OOP

!tudi asus beriutnya adalah ba"aimana #roses insert data e My!1L den"an scri#t OOP. ;ia
sebelumnya ita sudah membuat class CdatabaseD dan method untu onesi e mysSlnya4 maa untu
insert data ini ita bisa tambahan method tersendiri e dalam class CdatabaseD tersebut.
0i dalam class CdatabaseD ita buat <unction Cadd/uuD.
function addBuku($judul, $pengarang, $penerbit, $thnTerbit)
{
$query = "INSERT INTO buku (judul, pengarang, penerbit, tahunTerbit)
VALUES ('$judul', '$pengarang', '$penerbit', '$thnTerbit')";
$hasil = mysql_query($query);
if ($hasil) echo "Data buku sudah disimpan ke DB";
else echo "Data buku gagal disimpan ke DB";
}

0alam <unction add/uu+, tersebut4 terda#at 4 #arameter yaitu 'udul4 #en"aran"4 #enerbit4 dan tahun
terbit.
:da#un cara #en""unaan method add/uu+,4 #erhatian scri#t beriut ini
Kasus6%.php
<?php
include 'kasus03-class.php';
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman %$ dari %&


// parameter koneksi mysql
$host = 'localhost';
$user = 'root';
$pass = '';
$mydb = 'test';

// instantitasi dan setting properties obyek database
$db = new database($host, $user, $pass, $mydb);

// koneksi ke MySQL via method
$db->connectMySQL();

// insert data buku via method
$db->addBuku('Pemrograman OOP di PHP', 'Rosihan Ari Yuana', 'Penerbit
Sendiri', '2012');
?>
15. tudi .asus )4 1 Menam#ilkan 2ata da"i My3L den!an OOP

!etelah #roses insert data4 selan'utnya ita tam#ilan semua data yan" sudah diinsert e database
men""unaan "aya OOP.
Pertama4 ita tambahan method untu menam#ilan data ini4 misalan diberi nama tam#il/uu+,
function tampilBuku()
{
echo "<table border='1'>";
echo "<tr><th>No</th><th>Judul
Buku</th><th>Pengarang</th><th>Penerbit</th><th>Tahun
Terbit</th><th>Action</th></tr>";

// query untuk menampilkan semua data buku
$query = "SELECT * FROM buku ORDER BY id";
$hasil = mysql_query($query);
$i = 1;
while ($data = mysql_fetch_array($hasil))
{
echo
"<tr><td>".$i."</td><td>".$data['judul']."</td><td>".$data['pengarang']."</td
><td>".$data['penerbit']."</td><td>".$data['tahunTerbit']."</td><td><a
href='".$_SERVER['PHP_SELF']."?op=edit&id=".$data['id']."'>Edit</a> | <a
href='".$_SERVER['PHP_SELF']."?op=del&id=".$data['id']."'>Hapus</a></td></tr>
";
$i++;
}

echo "</table>";
}
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman %% dari %&


0alam method tam#il/uu+, di atas4 data ita sa'ian dalam bentu tabel. !elain tam#ilan data4 dalam
tabel tersebut 'u"a ita berian lin untu edit dan ha#us data #ada setia# baris datanya.
-emudian4 #erhatian scri#t yan" men""unaan method tam#il/uu+, tersebut.
Kasus60.php
<?php
include 'kasus04-class.php';

// parameter koneksi mysql
$host = 'localhost';
$user = 'root';
$pass = '';
$mydb = 'test';

// instantitasi dan setting properties obyek database
$db = new database($host, $user, $pass, $mydb);

// koneksi ke mysql via method
$db->connectMySQL();

// tampilkan data buku via method
$db->tampilBuku();
?>

Cuu# mudah buan den"an OOP5 !etia# ali a#abila ita in"in menam#ilan data buu4 cuu#
meman""il method tam#il/uu+, sa'a.
0alam scri#t -asus&4.#h# di atas4 untu <itur edit data dan ha#us datanya belum bisa di"unaan arena
belum dibuat method atau <unctionnya. Pembahasan tentan" hal ini aan di'elasan di studi asus
beriutnya.
1$. tudi .asus )5 1 4a#us 2ata da"i My3L den!an OOP

/eriutnya ita tin'au #roses ha#us data. >ntu e#erluan ini4 ita buat method den"an nama
ha#us/uu+, #ada class CdatabaseD nya.
function hapusBuku($id)
{
$query = "DELETE FROM buku WHERE id = '$id'";
mysql_query($query);
echo "Data buku ID ".$id." sudah dihapus";
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman %0 dari %&

}

Perhatian <unction di atas4 dalam <unction tersebut terda#at sebuah #arameter Fid. Parameter ini
di"unaan untu menyataan I0 buu mana yan" aan diha#us.
!elan'utnya #erhatian contoh scri#t untu #roses ha#us datanya.
-asus&5.#h#
<?php
include 'kasus05-class.php';

// parameter koneksi mysql
$host = 'localhost';
$user = 'root';
$pass = '';
$mydb = 'test';

// instantitasi dan setting properties obyek database
$db = new database($host, $user, $pass, $mydb);

$db->connectMySQL();

// proses hapus data
if (isset($_GET['op']))
{
if ($_GET['op'] == 'del')
{
// baca ID dari parameter ID buku yang akan dihapus
$id = $_GET['id'];
// proses hapus data buku berdasarkan ID via method
$db->hapusBuku($id);
}
}

// tampilkan semua data buku
$db->tampilBuku();
5A
;ia ita #erhatian scri#t di atas4 maa leta #roses ha#us data dilauan sebelum +di atas, method
untu menam#ilan data buu. Hal ini bertu'uan su#aya data yan" tam#il #ada method tam#il/uu+,
meru#aan list data yan" sudah terbaru setelah #roses #en"ha#usan. ;ia leta #roses ha#us data
dilauan setelah atau di ba*ah tam#il/uu+, maa :nda harus mere<resh scri#t asus&5.#h# ini setelah
#roses #en"ha#usan su#aya data yan" sudah diha#us tida muncul di tam#il/uu+,.

Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman %1 dari %&

1&. tudi .asus )$ 1 *dit 2ata da"i My3L den!an OOP

>ntu #roses edit data ini4 nantinya ita aan membuat ( method4 yaitu method untu membaca data
buu yan" aan di edit berdasaran I0 tertentu. 0ata buu yan" dibaca ini selan'utnya aan ditam#ilan
di <orm edit. -emudian4 method beriutnya ita "unaan untu #roses u#date datanya.
!earan" #erhatian method baca0ata/uu+, untu baca data buu berdasaran I0 nya beriut ini
function bacaDataBuku($type, $id)
{
$query = "SELECT * FROM buku WHERE id = '$id'";
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);
if ($type == 'judul') return $data['judul'];
else if ($type == 'pengarang') return $data['pengarang'];
else if ($type == 'penerbit') return $data['penerbit'];
else if ($type == 'thnTerbit') return $data['tahunTerbit'];
}

Function baca0ata/uu+, di atas terda#at dua #arameter yaitu Fty#e dan Fid. Parameter Fty#e
di"unaan untu menentuan ti#e data a#a yan" men'adi return 8alue nya.
;ia nilai Fty#e nya adalah C'udulD4 maa method baca0ata/uu+, ini aan men"hasilan return 8alue
'udul buu dari I0 buu tertentu. ;ia Fty#e nya C#en"aran"D maa return 8alue nya adalah nama
#en"aran"nya4 demiian 'u"a untu Fty#e nya C#enerbitD mau#un Cthn7erbitD.
Man<aat dari bentu method se#erti ini ita cuu# membuat sebuah method sa'a untu membaca
semua eteran"an data buu berdasaran I0 buunya.
:da#un cara #eman""ilan method baca0ata/uu+, ini adalah seba"ai beriut?
Fdb9Abaca0ata/uu+J'udulJ4 Fid,G
>ntu membaca ;udul /uu dari I0 buu Fid4
Fdb9Abaca0ata/uu+J#en"aran"J4 Fid,G
>ntu membaca nama #en"aran" dari I0 buu Fid
dan seterusnya.. :nda bisa lihat detailnya di scri#t asus&6.#h#
!elan'utnya ita buat method u#date0ata/uu+, untu #roses u#date datanya
function updateDataBuku($id, $judul, $pengarang, $penerbit, $thnTerbit)
{
$query = "UPDATE buku SET
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman %2 dari %&

judul = '$judul', pengarang = '$pengarang',
penerbit = '$penerbit', tahunTerbit = '$thnTerbit'
WHERE id = '$id'";
mysql_query($query);
echo "Data buku sudah diupdate";
}

Pada <unction u#date0ata/uu+, tersebut terda#at 5 #arameter di mana Fid menun'uan I0 dari buu
yan" aan diedit4 F#en"aran" menyataan nama #en"aran" buu yan" diu#date4 F#enerbit untu nama
#enerbit4 dan Fthn7erbit menun'uan tahun terbit buu.
Cara #eman""ilan method u#date0ata/uu+, bisa :nda lihat di scri#t asus&6.#h#
!am#ai bab ini4 dihara#an :nda sudah bisa men"uasai teni #emrosesan data My!1l den"an "aya
#emro"raman OOP. ;ia di#erhatian4 dalam setia# scri#t untu masin"9masin" studi asus selalu dibuat
#roses instantisasi dan settin" #ro#erties sbb?
// parameter koneksi mysql
$host = 'localhost';
$user = 'root';
$pass = '';
$mydb = 'test';

// instantitasi dan setting properties obyek database
$db = new database($host, $user, $pass, $mydb);

Hal ini dilauan arena masin"9masin" scri#t letanya ter#isah4 sehin""a untu melauan instantisasi
ini dilauan #ada setia# scri#t. =amun4 a#abila #roses insert data4 tam#il data4 edit data dan ha#us
data diletaan dalam scri#t yan" sama4 maa #roses instantisasi cuu# dilauan seali sa'a.
Latihan
%. 7ambahan <ield baru bernama C'enisD dalam tabel CbuuD.
-eteran"an?
Field C'enisD ini menun'uan 'enis buunya4 yaitu? tePt boo4 ma'alah4 atau tutorial
(. Modi<iasi scri#t untu insert data4 dan edit data su#aya scri#t bisa di"unaan untu strutur
data di tabel CbuuD yan" baru +setelah #enambahan <ield C'enisD,.
2. /uatlah method baru den"an nama? cari/uu+Fey*ord, yan" aan di"unaan untu #roses
#encarian buu berdasaran Fey*ord 'udul buu.
4. /uatlah <orm #encarian buu berdasaran 'udul buu men""unaan method
cari/uu+Fey*ord, tersebut.
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman %3 dari %&

1'. tudi .asus )& 1 Membuat c"i#t Lo!in den!an OOP

Pada studi asus ini ita aan membuat scri#t lo"in dimana scri#tnya ita buat den"an "aya
#emro"raman OOP.
!ebelum ita membuat detil scri#t PHP nya4 terlebih dahulu ita rancan" class9class beserta #ro#erties
dan methodnya. /eriut ini "ambaran class yan" aan dibuat. Perancan"an class ini #erlu dilauan
su#aya se'a a*al ita sudah membuat semacam #erencanaan4 arena #erancan"an class ini meru#aan
suatu roadma# dari a#liasi yan" aan ita buat. 0i dalam #er'alanannya nanti4 class da#at sa'a berubah
#ro#erties mau#un methodnya seirin" den"an ebutuhannya.
;lass: Database
Class ini nanti di"unaan untu men"atur se"ala tentan" onesi database e My!1L.
,ama Properties Deskripsi
dbHost =ama host
db>ser >sername My!1L
dbPass Pass*ord My!1L
db=ame =ama 0atabase

,ama Metho! Deskripsi
connectMy!1L+, Melauan onesi e My!1L

;lass: login
Class ini di"unaan untu hal9hal terait den"an #roses lo"in seoran" user
,ama Properties Deskripsi
>sername =ama user lo"in
Pass*ord Pass*ord user lo"in

,ama Metho! Deskripsi
#rosesLo"in+, Melauan #roses lo"in
baca=ama>ser+, Membaca nama user yan" sedan" lo"in
baca!tatusLo"in+, Membaca status seoran" user a#aah dia sudah lo"in atau
belum
redirect+Furl, Melauan redirectin" e halaman Furl setelah lo"in
suses
sa#a>ser+, Menam#ilan strin" sa#aan ba"i user yan" telah lo"in
Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman %4 dari %&

#rosesLo"out+, Melauan #roses lo"out
8alidasiLo"in+, Menam#ilan C:nda belum lo"inD etia seseoran"
men"ases halaman tertentu etia belum lo"in

;lass: menu
Class ini di"unaan untu hal yan" terait den"an menu si user setelah lo"in suses
,ama Properties Deskripsi
listMenu 0a<tar menu

,ama Metho! Deskripsi
tam#ilMenu+, Menam#ilan da<tar menu

=/? Bancan"an class yan" terdiri dari #ro#erties dan method di atas bisa diemban"an sendiri sesuai
ebutuhan :nda.
!elan'utnya untu studi asus ini4 strutur tabel yan" di"unaan adalah sbb?
CREATE TABLE `users` (
`username` varchar(50),
`password` varchar(100),
`nama` varchar(100),
PRIMARY KEY (`username`)
)

!ecara detail untu method dalam setia# class4 bisa dilihat di scri#t Casus&79class.#h#D
Pen""unaan class dari scri#t Casus&79class.#h#D nya ada dalam scri#t Casus&7.#h#D
Latihan
%. 7ambahan sebuah <ield baru bernama Cle8elD di dalam tabel CusersD. Field ini menun'uan le8el
si user a#aah CadministratorD atau Co#eratorD
(. /uatlah method di dalam class Clo"inD den"an nama "etLe8el+Fusername, yan" di"unaan untu
membaca le8el si user berdasaran Fusername nya
2. 0en"an men""unaan method "etLe8el+, ini4 modi<iasilah method tam#ilMenu+, dalam class
CmenuD su#aya menam#ilan da<tar menu sesuai le8elnya. ;ia le8elnya CadministratorD maa
aan tam#il semua menu4 namun 'ia Co#eratorD hanya aan tam#il menu halaman % dan ( sa'a.

Pan!uan Praktis ""P !i P#P Rosihan Ari Yuana http://blog.rosihanari.net

Halaman %& dari %&

Tentang Penulis

Penulis meru#aan sta<< #en"a'ar +dosen, di #ro"ram studi Pendidian
Matematia #ada Faultas -e"uruan dan Ilmu Pendidian +F-IP, di
>ni8ersitas !ebelas Maret !uraarta +>=!,. !ehari9hari #enulis men"a'ar
matauliah #emro"raman om#uter4 com#uter aided learnin"4 dan *eb
based learnin". !elain men"a'ar4 #enulis 'u"a diberian amanah untu
men"elola IC7 Center di F-IP >=! +htt#?//<icos.<i#.uns.ac.id,
0i sam#in" men'adi sta<< #en"a'ar4 #enulis 'u"a meru#aan seoran"
de8elo#er so<t*are hususnya yan" berbasis !M! Qate*ay. !alah satu
#roye besar yan" telah dibuatnya adalah Qam#!M!.
+htt#?//"am#sms.rosihanari.net,
0i sela9sela esibuannya4 #enulis berusaha menyem#atan untu menshare berba"ai tutorial tentan"
#ro"rammin" di blo"nya +htt#?//blo".rosihanari.net, dan menulis bebera#a buu tentan" om#uter
serta matematia.
Penulis berhara#4 semo"a arya9arya yan" dihasilan bisa memberian man<aat #ositi< ba"i ummat dan
memba*a eberahan ba"i semuanya. :min....
Baarokallahu fiikum...

Anda mungkin juga menyukai