Object Oriented Programming PHP 5 - Bagian 1

PHP merupakan server-side scripting untuk membangun halaman web dinamis yang sangat populer saat ini dan powerful. Keunggulan PHP adalah pada kemudahan dalam penulisan program dan dukungan extension library yang sangat banyak terutama dalam hal koneksi database. Salah satu keunggulan PHP yang lain adalah penulisan kode dalam style Object Oriented Programming atau biasa juga disingkat OOP. Style OOP sudah didukung sejak PHP 3, tetapi mulai versi 5 style OOP PHP ditulis ulang kembali agar lebih mendekati kepada prinsip-prinsip OOP yang sebenarnya seperti munculnya modifier public, protected, private, abstract dsb. OOP pada PHP 5 mirip dengan OOP pada Java.

Apa sih Object Oriented Programming itu? OOP mudahnya adalah membangun sebuah aplikasi dengan menggunakan object (objek). Mari kita analogikan sebuah aplikasi sebagai sebuah Mobil. Mobil dibangun oleh komponen-komponen pendukungnya (objek) seperti ban, mesin, rangka mobil, setir dan komponen-komponen lainnya. Setiap komponen mempunyai fungsinya masing-masing dan saling mendukung satu sama lain, agar sebuah mobil dapat berjalan dengan baik. Hal seperti ini kemudian kita implementasikan dalam pembangunan aplikasi dimana kita membangun aplikasi dengan menggunakan objek-objek yang telah kita buat sebelumnya. Pengenalan lebih lanjut mengenai konsep OOP dapat dilihat di sini.

Untuk membuat sebuah objek maka kita harus mendeklarasikan terlebih dahulu Blue-Print atau prototype dari object tersebut. Prototype dari sebuah objek dalam terminologi pemrograman disebut class (kelas). Di bawah ini adalah contoh sebuah deklarasi kelas dengan sebuah variabel dan sebuah metode.

<?php
 
class kelasKucing
{
    var nama_kucing = '';
 
    // metode untuk memberikan nama pada kucing

    function setNamaKucing($isi_nama_kucing)
    {
         $this->nama_kucing = $isi_nama_kucing;
    }

 
    // metode untuk mengetahui nama kucing 
    function getNamaKucing()
    {
         return $this->nama_kucing;
    }

}
 
?>


Source code di atas mendeklarasikan sebuah kelas (Blue-Print) dengan nama kelasKucing. Kelas ini nantinya akan menghasilkan sebuah objek "kucing". Salah satu metode kelas ini adalah metodeSetNamaKucing yang fungsinya adalah memberikan nama untuk objek kucing nantinya. WARNING!! Jangan samakan kelas dengan objek, objek merupakan hasil cetakan dari sebuah kelas.

Untuk membuat sebuah objek dari dari kelasKucing, maka kita harus meng-instantiate kelasKucing atau mudahnya mencetak sebuah objek dari kelasKucing. Contohnya bisa dilihat pada contoh di bawah ini :

<?php
 
require 'kelasKucing.inc.php';
 
// buat objek kucing pertama
$blacky = new kelasKucing();
 // kasih nama buat kucing baru kita

 $blacky->setNamaKucing('blacky');
 // siapakah nama kucing yang baru kita buat
 echo "Nama kucing pertama kita adalah : ".$blacky->getNamaKucing;

 
// buat objek kucing kedua
$kitty = new kelasKucing();
 // kasih nama buat kucing baru kedua kita
 $kitty->setNamaKucing('kitty');
 // siapakah nama kucing yang baru kita buat

echo "Nama kucing kedua kita adalah : ".$kitty->getNamaKucing;
 
?>


Perbedaan paling mendasar pada OOP di PHP 5 dengan versi PHP sebelumnya adalah pada akses kepada properti dan metode dari kelas. Pada PHP 4, semua properti kelas bisa diakses secara public (dari manapun) dan semua metode kelas bisa diakses secara static tanpa harus membuat objek dari kelas terlebih dahulu. Pada PHP 5 sudah diperkenalkan modifier-modifier properti dan metode seperti halnya Java dan C++. Beberapa diantaranya yang penting adalah :
  • PUBLIC Ini artinya setiap properti atau metode bisa diakses secara langsung oleh program lain diluar kelas.
  • PROTECTED Ini artinya setiap properti atau metode hanya bisa diakses oleh kelas itu sendiri dan bisa diakses oleh kelas lain yang meng-inherit kelas tersebut.
  • PRIVATE Ini artinya setiap properti atau metode hanya bisa diakses oleh kelas itu sendiri.
Contoh implementasi modifier ini bisa dilihat pada source code di bawah ini :

<?php
 
class kelasKucing
{
 private nama_kucing = '';
 private tahun_lahir_kucing;
 protected usia_kucing;
 public gender_kucing = '';

 
 public function setNamaKucing($isi_nama_kucing)
 {
     $this->nama_kucing = $isi_nama_kucing;
 }

 
 public function setTahunLahirKucing($isi_tahun_lahir_kucing)
 {
     $this->tahun_lahir_kucing = $isi_tahun_lahir_kucing;
 }

 
 protected function hitungUsiaKucing()
 {
     if ($this->tahun_lahir_kucing AND ) {

         $this->usia_kucing = (integer)date("Y") - $this->tahun_lahir_kucing
     }

 }
 
 
}
 
// buat objek kucing
$arie = new kelasKucing();
// metode setNamaKucing dan setTahunLahir bisa dipanggil

// langsung oleh objek karena sifatnya public
 // kasih nama untuk si kucing
 $arie->setNamaKucing("arie");
 // tahun lahir si kucing
 $arie->setTahunLahir(1982);

 
// syntax di bawah ini benar
// karena properti gender_kucing bersifat public
$arie->gender_kucing = "laki-laki"
 
// syntax di bawah ini salah dan akan memunculkan error
// properti usia_kucing bersifat private

$arie->usia_kucing = 20;
// properti nama_kucing bersifat private
echo "Nama kucing kita adalah : ".$arie->nama_kucing;

 
?>


Bisa dilihat bahwa implementasi OOP pada PHP 5 sudah sangat advanced dan pada kenyataan sudah banyak extension library ataupun fungsi-fungsi di PHP 5 yang menggunakan model OOP untuk penggunaannya. Salah satunya adalah fungsi mysql improved (mysqli) yang menyediakan style komunikasi database mysql dalam bentuk OOP. Sampai sini dulu pengenalan pada OOP PHP 5, see you on next articles with same topics.

Komentar

Andri mengatakan…
Dear pak Arie,

maaf200x bgt klo OOT, tp sy sangat butuh jawaban dari pertanyaan ini. sy pernah ngrim email ke arie[at]senayan.diknas.go.id tp blm bpk respon.

Sy menginstal senayan di ubuntu 7.10 dg mysql 5 dan php 5 yg GDnya sdh sy install pula. tapi...d halaman OPAC yg menampilkan list buku2 itu, image buku yg sy upload kok tidak muncul pak..yg ada malah tulisan File not found.

kira2 knp ya pak???apa ada yg salah dgn konfigurasi GDnya??

mohon pencerahannya di forward ke: andrew_jtkpolban@yahoo.com

Trims

terimakasih.
Panji Trisnoaji mengatakan…
aku tertarik dengan senayan. bisa tidak saya minta userguidenya.

panji trisnoaji
panji@star-media.co.id
uang-oh-uang mengatakan…
makasih mas atas penjelasannya.. saya menjadi agak jelas untuk logika OOP nya. Tetapi sedikit bingung jika terdapat objek yg banyak :(

Postingan populer dari blog ini

PUSTAKAWAN: membuat pathfinder online menjadi lebih mudah

Instalasi library YAZ di PHP

Memanfaatkan Facades pada Framework Laravel