OOP: Object Oriented Programming

PHP mendukung Object Oriented Programming atau OOP secara penuh sejak versi PHP 5. Di PHP Object didefinisikan dalam sebuah class. Properti object didefinisikan menggunakan kata tercadang var, dan method dari object berbentuk sebuah function. Daftar Isi

Object dan Class

Secara singkat class adalah template/kerangka yang digunakan untuk membentuk sebuah object. Dengan demikian object adalah data yang telah terstruktur sesuai dengan yang didefinisikan dalam sebuah class. Object adalah instance dari classnya. Di PHP object didefinisikan menggunakan kata tercadang class diikuti oleh nama class. Nama class boleh berupa gabungan huruf dan angka serta tanda garis bawah, tapi tidak boleh diawali dengan angka dan tidak menggunakan kata tercadang seperti abstract,static,final,private. Kode yang terkait dengan sebuah class ditutup dengan kurung kurawal. Contoh:

class Product{
//body class
}

class shopping_cart{
//body class
}

Membuat Instance Sebuah Class

Untuk membuat instance dari sebuah class digunakan kata tercadang new dan diikuti oleh nama class tersebut. Misalkan:

$product = new Product();

Properti Object & Visibility Keyword

Dalam class dapat didenisikan variable spesial yang disebut properti. Properti juga disebut member variable. Mendefinisikan variable di dalam class sama dengan mendefinisikan variable biasa. Hanya saja diawali dengan visibility keyword atau kata tercadang var, diikuti oleh nama properti. Visibility keyword dapat berupa public, protected atau private. Kata tercadang var sama dengan public. Visibility keyword ini menandakan ruang lingkup dari mana saja properti bersangkutan bisa diakses. Nama properti bisa berupa gabungan dari huruf dan angka serta garis bawah, tetapi tidak boleh diawali dengan angka. Cara mendefinisikan properti dengan kata tercadang public:

class Product{
public $name = 'default product name';
public $price = 0;
public $description; //definisi properti dengan nilai null
}

Cara mengakses properti dan men-setting properti

$product = new Product();
//mengakses property
echo $product->name; //ouput 'default product name'
echo 'Price: '.$product->price; //output 'Price: 0';
//men-setting nilai properti
$product->price = 100;
echo 'Price: '.$product->price; //ouput 'Price: 100';

Method Class

Properti memberi object kemampuan untuk menyimpan data, dan method memberi object kemampuan untuk melakukan sebuah tugas. Method adalah function spesial yang dideklarasikan dalam sebuah class. Deklarasi method sama dengan deklarasi function php biasa. Hanya saja method harus dideklarasikan dalam body class, dan bisa dideklarasikan dengan visibility keyword. Contoh method:

class Product{

public $name = 'default product name';
public $price = 0;
protected $discount = 0; //dalam persen

public function getDiscount(){
 return $this->discount; //cara mengakses properti dari sebuah method
}

public function getPrice(){
 $price = $this->price - ($this->price * $this->getDiscount());
 return $price;
}

public function setDiscount($discount){
 $this->discount = $discount; // cara men-setting nilai properti dari method
}
}

Memanggil atau Menggunakan Method Class

Untuk memanggil method dari sebuah class sama seperti properti menggunakan tanda ->, seperti contoh di bawah:

$product = new Product();
$product->price = 100;
echo 'Price: '.$product->getPrice(); //output 'Price: 100'
$product->setDiscount(5);
echo 'Price: '.$product->getPrice(); //output 'Price: 95'
echo 'Discount: '.$product->getDiscount().'%'; //output 'Discount: 5%'

Konstruktor Class

Konstruktor class adalah method yang dipanggil pada saat object dibentuk atau diinstance. Konstruktor digunakan untuk mempersiapkan class sebelum class digunakan. Seperti menset properti properti penting, memanggil method method lain. Di PHP 5, konstruktor class diberi nama __construct(). Nama method diawali dengan dua tanda garis bawah dan kata construct. Contoh konstruktor:

class Product{

public $name = 'default product name';
public $price = 0;
protected $discount = 0; //dalam persen

public function __construct($productName, $price){
 $this->name = $productName;
 $this->price = $price;
}

public function getDiscount(){
 return $this->discount; //cara mengakses properti dari sebuah method
}

public function getPrice(){
 $price = $this->price - ($this->price * $this->getDiscount());
 return $price;
}

public function setDiscount($discount){
 $this->discount = $discount; // cara men-setting nilai properti dari method
}
}

Contoh penggunaan:

$product = new Product('Buku Belajar PHP Object', 99.5);
echo $product->name; //output 'Buku Belajar PHP Object' bukan 'default product name'
echo $product->getPrice(); //output '99.5' bukan '0'

Inheritance atau Pewarisan

Inheritance atau Pewarisan adalah sebuah mekanisme dimana satu atau lebih class diturunkan dari sebuah class lain. Class yang mewarisi atau diturunakn dari class lainnya disebut subclass dari class yang diwarisi. Hal ini sering dijelaskan dalam konteks ayah dan anak (parent dan child). Child class mewarisi semua karakteristik dari parent class. Karakteristik ini adalah properti dan method. Biasanya child class menambahkan fungsionalitas baru yang tidak dimiliki oleh parent class. Untuk lebih memperjelas akan diberikan contoh kasus sebagai berikut.

Dari contoh di atas telah dibuat sebuah class Product. Class ini bisa menangani produk pada umumnya, dimana setiap product memiliki nama dan harga, juga bisa mendapatkan diskon. Namun class product ini tidak cukup baik untuk menangani produk yang berupa CD musik. CD musik memerlukan informasi berupa total durasi, nama artis serta daftar judul lagu. Untuk itu diperlukan class baru (misal class CDmusik) yang mewarisi karakteristik class product. Contoh inheritance:

class CDmusik extends Product{

public $artis;
public $durasi = 0;
public $daftarLagu = array();

function tambahLagu($lagu){
 if(is_array($lagu)){
 $this->daftarLagu = array_merge($this->daftarLagu, $lagu);
 }else{
 $this->daftarLagu[] = $lagu;
 }
}

function setDurasi($durasi){
 $this->durasi = $durasi;
}

function setArtis($artis){
 $this->artis = $artis;
}

}

$cdAndra = new CDmusik('Andra and The Backbone', 40);
$cdAndra->tambahLagu('Main Hati');
$cdAndra->tambahLagu('Hitamku');
$cdAndra->setArtis('Andra');
$cdAndra->setDurasi(60);

echo 'Artis: '.$cdAndra->artis;
echo '<br/>Durasi:'.$cdAndra->durasi;
echo '<br/>Lagu:';
echo '<ol>';
foreach($cdAndra->daftarLagu as $lagu){
echo '<li>'.$lagu.'</a>';
}
echo '</ol>';

Rangkuman

PHP mendukung Object Oriented Programming secara penuh sejak versi PHP 5. Object didefinisikan dalam sebuah class. Secara singkat class adalah template/kerangka yang digunakan untuk membentuk sebuah object. Dengan demikian object adalah data yang telah terstruktur sesuai dengan yang didefinisikan dalam sebuah class. Properti memberi object kemampuan untuk menyimpan data, dan method memberi object kemampuan untuk melakukan sebuah tugas. Method adalah function spesial yang dideklarasikan dalam sebuah class. Dengan Inheritance atau Pewarisan class bisa diturunkan ke dalam subclass subclass.

Referensi

PHP: Classes and Objects - Manual