Tutorial PHP #20: OOP Dasar di PHP: Class dan Object

1. Apa itu OOP?

OOP (Object-Oriented Programming) adalah paradigma pemrograman yang mengorganisasi kode ke dalam objek-objek yang memiliki data (property) dan perilaku (method). Dibanding prosedural, OOP membuat kode lebih terstruktur, reusable, dan mudah di-maintain untuk project besar.

2. Class dan Object

Analoginya: class adalah cetak biru (blueprint) rumah, object adalah rumah yang sudah dibangun berdasarkan cetak biru tersebut.

<?php
// Mendefinisikan class
class User {
    // Property (variabel dalam class)
    public string $nama;
    public int $umur;
    public string $email;

    // Method (function dalam class)
    public function perkenalan(): string {
        return "Halo, nama saya {$this->nama}, umur {$this->umur} tahun.";
    }
}

// Membuat object dari class User
$user1 = new User();
$user1->nama  = "Ariq";
$user1->umur  = 25;
$user1->email = "ariq@email.com";

$user2 = new User();
$user2->nama  = "Budi";
$user2->umur  = 22;

// Mengakses property dan memanggil method
echo $user1->nama;              // Output: Ariq
echo $user1->perkenalan();      // Output: Halo, nama saya Ariq, umur 25 tahun.
echo $user2->perkenalan();      // Output: Halo, nama saya Budi, umur 22 tahun.
?>

3. Keyword $this

$this mengacu pada object itu sendiri - digunakan di dalam method untuk mengakses property atau method lain dari class yang sama.

<?php
class Lingkaran {
    public float $radius;

    public function luas(): float {
        return 3.14 * $this->radius * $this->radius;
    }

    public function keliling(): float {
        return 2 * 3.14 * $this->radius;
    }

    public function info(): string {
        return "Radius: {$this->radius}, Luas: {$this->luas()}, Keliling: {$this->keliling()}";
    }
}

$lingkaran = new Lingkaran();
$lingkaran->radius = 7;
echo $lingkaran->info();
// Output: Radius: 7, Luas: 153.86, Keliling: 43.96
?>

4. Visibility / Access Modifier

Tiga level akses untuk property dan method:

<?php
class Produk {
    public string $nama;        // bisa diakses dari mana saja
    protected float $harga;     // hanya dari class ini dan turunannya
    private string $kodeRahasia; // hanya dari class ini saja

    public function setHarga(float $harga): void {
        if ($harga < 0) throw new InvalidArgumentException("Harga tidak boleh negatif");
        $this->harga = $harga;
    }

    public function getHarga(): float {
        return $this->harga;
    }
}

$produk = new Produk();
$produk->nama = "Laptop";   // OK, public
$produk->setHarga(12000000); // OK, via method public
echo $produk->getHarga();    // Output: 12000000

// $produk->harga = 100;      // ERROR! harga adalah protected
?>

5. Static Property dan Static Method

Static member bisa diakses tanpa perlu membuat object terlebih dahulu.

<?php
class Counter {
    public static int $total = 0;

    public static function tambah(): void {
        self::$total++;
    }

    public static function getTotal(): int {
        return self::$total;
    }
}

Counter::tambah();
Counter::tambah();
Counter::tambah();

echo Counter::getTotal();   // Output: 3
echo Counter::$total;       // Output: 3
?>

6. Ringkasan

  • Class adalah blueprint, object adalah instance dari class
  • $this mengacu pada object saat ini di dalam method
  • Gunakan new NamaClass() untuk membuat object
  • public, protected, private untuk mengontrol akses
  • static untuk member yang bisa diakses tanpa membuat object

Tutorial berikutnya membahas constructor, destructor, dan property di PHP.