Tahun III, Nomor 13, April 2001

Membuat Class dalam PHP

Home
Halaman Muka

X-Terminal 

Upgrade PHP sebagai module Apache Web Server pada Linux RedHat 6.2 
 

 

Artikel ini membahas bagaimana membuat class dalam PHP. Dijelaskan sedikit mengenai objek atau kelas. Kemudian diberikan contoh dalam pemakaian sehari-hari. Penerapan sederhana bagaimana mendeklarasikan kelas dan memakainya diulas sedikit. Contoh yang lebih serius untuk aplikasi konektivitas ke database juga diberikan disini. 

1. Pengantar

Class adalah sekumpulan variabel/property dan fungsi/method yang mengolah variabel-variabel ini. Class sering disebut juga sebagai objek. Dengan menggunakan objek proses pembuatan program menjadi lebih cepat, karena objek-objek yang sudah ada dapat dipakai untuk membuat objek yang lain.

2. Cara membuat objek

Objek dapat didefinisikan dengan sintaksis berikut, 
class namaobjek {
 var $property;
 function method($arg) {
  //definisi method;
 }
}
sintaksis di atas mendefinisikan sebuah objek yang bernama namaobjek dengan satu property $property dan satu method yaitu method(). 

3. Contoh sederhana

Sebagai contoh nyata., kita akan bicarakan sebuah kendaraan favorit saya " sepeda" . Sebagai sebuah objek tentu saja sepeda mempunyai sifat yang dimilikinya. Bisa jadi sifat ini dimiliki juga oleh benda/objek lain, tapi disini saya membicarakan sepeda. 
Sepeda milik saya ini warnanya hitam, tentu saja hanya mempunyai 2 roda. Ketika saya beli harganya hanya 100 ribu rupiah. Karena nilai tukar mata uang rupiah semakin menurun saja, tentu saja kalau saya jual harganya sudah tidak sebesar itu lagi. Saya tidak tahu harga jualnya lebih rendah atau lebih tinggi. 
Dalam PHP saya dapat mendefinisikan objek sepeda ini seperti berikut, filenya saya beri nama kendaraan.class.php. 
<?php
class sepeda {
  var $Roda="2";
  var $Warna="hitam";
  var $Harga;

  function UbahWarna($WarnaBaru) {
    $this->Warna=$WarnaBaru;
  }

  function UbahHarga($HargaBaru) {
    $this->Harga=$HargaBaru;
  }
}
?>
Studi banding dengan sintaksis dasar sebelumnya dapat kita tarik kesimpulan, 
•nama kelas : sepeda 
•jumlah property ada 3 yaitu, Roda, Warna, dan Harga 
•terdapat 2 method yaitu, UbahWarna dan UbahHarga 
Ada dua property yang diberikan nilai awal langsung dalam kelas, sebagai harga default, dan satu property yang tidak. Jadi anda dapat mendeklarasikan property seperti ini. 
Kelas adalah sebuah type data seperti layaknya jenis data yang lain misalnya integer atau karakter, jadi deklarasi ini hanya memberitahu PHP bahwa ada satu jenis data lagi yang bernama sepeda. Jadi agar kita dapat memakai kelas ini kita harus membuat variabel dengan jenis data sepeda. Perhatikan contoh pemakaian objek sepeda pada file coba.class.php berikut, 
<?php
include("kendaraan.class.php");
echo "<p>Sepeda";
$kendaraan = new sepeda;
echo "<p>Jumlah Roda: ".$kendaraan->Roda."<br>";
echo "Warna: ".$kendaraan->Warna."<br>";
echo "<p>Setelah perintah \"\$kendaraan->UbahWarna(\"merah\")\"<br>";
$kendaraan->UbahWarna("merah");
echo "Warna: ".$kendaraan->Warna."<br>";
?>
include("kendaraan.class.php") digunakan untuk memuat file yang berisi deklarasi kelas sepeda. Kemudian baris ke 3 adalah cara pembuatan objek dengan jenis kelas sepeda dengan perintah new. Jika anda load file ini dalam browser anda, tampilannya tampak seperti gambar ini 
Sepeda

Jumlah Roda: 2
Warna: hitam

Setelah perintah "$kendaraan->UbahWarna("merah")"
Warna: merah
Untuk memanggil property dalam objek dengan menyebutkan terlebih dahulu objek-nya kemudian baru property-nya. Keduanya dipisahkan tanda panah ke kanan (->), perhatikan cara mengakses property pada baris, 
echo "Warna: ".$kendaraan->Warna."<br>";
Demikian juga untuk memanggil method dalam objek tidak banyak berbeda dengan property, 
$kendaraan->UbahWarna("merah");
Yang membedakannya adalah tanda kurung di akhir di akhir. 

4. Contoh yang lebih serius

Contoh dalam pemrograman PHP adalah kelas untuk akses ke database MySQL. Perhatikan definisi kelas berikut ini, 
<?php
/* db.class.php
A simple database manipulation class by Salman AS, salmanas@programmer.net.
ChangeLog: 02/14/2001 Started.
           02/26/2001 Query Method added.
*/

class DB {
  var $Connection;
  var $DBHost="localhost";
  var $DBUser="root";
  var $DBPass="";
  var $DBName;
  var $DBRecSet;

  // Constructor for this class
  function DB ($db_host, $db_user, $db_pass, $db_name) {
    $this->DBHost = $db_host;
    $this->DBUser = $db_user;
    $this->DBPass = $db_pass;
    $this->DBName = $db_name;
    if (!$this->Open()) echo "Error occure on openning connection or database. Period.";
  }

  // Open database server connection
  function Open () {
    if (!($ServerConn = @mysql_pconnect($this->DBHost, $this->DBUser, $this->DBPass))) {
      return 0;
    } else {
      if (!($this->Connection = @mysql_select_db($this->DBName, $ServerConn)))
        return 0;
      else
        return 1;
     }
  }

  function Query ($sql) {
    if (empty($sql)) echo "No SQL command given. Period.";
    if ($this->DBRecSet=@mysql_query(addslashes($sql)))
      return $this->DBRecSet;
    else
      return 0;
  }
}
?>
Dari contoh tersebut tampak bahwa kelas adalah sekumpulan variabel dan fungsi biasa yang mewakili suatu objek tertentu, dalam hal ini konektivitas ke database MySQL. 
Yang harus diperhatikan dari contoh ini adalah adanya fungsi yang mempunyai nama yang sama dengan nama kelasnya. Fungsi ini akan selalu dipanggil ketika pertama kali kita menciptakan sebuah variabel berjenis data kelas dengan perintah new. Fungsi seperti ini sering disebut dengan constructor. 

Kata kunci yang lain yang perlu diperhatikan disini adalah $this. Kata kunci ini dipakai untuk merujuk property/method yang berada dalam kelas itu sendiri. Perhatikan baris, 
$this->DBHost = $db_host;
pada method DB(). Method ini memakai property $DBost dalam kelas dimana method DB() itu sendiri berada. 

Salman AS <salmanas@programmer.net>
 

| X-Terminal | Upgrade PHP sebagai module Apache Web Server pada Linux RedHat 6.2 |

Email : jakarta@jakarta.linux.or.id


| Home | Halaman Muka
 © 1999-2001  ELEKTRO Online
All Rights Reserved.
Last modified on :