PHP Class & Object

The Blueprint & The Product

Oleh: Ahmad Muyassar, S.Kom.,M.Cs

Production Schedule

01. Definisi Class & Object
02. Property & Method
03. Membuat Instance (New)
04. Keyword $this
05. Analogi Pabrik
01

Definisi

Cetakan vs Barang Jadi

Apa itu Class?

Class adalah cetak biru (blueprint) atau template untuk membuat objek.

Class mendefinisikan karakteristik (data) dan perilaku (fungsi) yang akan dimiliki oleh objek.

Apa itu Object?

Object adalah hasil nyata (instance) dari sebuah Class.

Jika Class adalah cetakan kue, maka Object adalah kue-nya.

Analogi Pabrik Mobil

Class Mobil

Gambar Desain

Spec Mesin

Warna (Belum ditentukan)

➡️ INSTANTIATION ➡️

Object Mobil 1

Toyota Avanza

Hitam

Satu Class, Banyak Object

Kita bisa membuat banyak objek berbeda dari satu class yang sama.

Setiap objek memiliki data (state) sendiri-sendiri yang independen.

02

Syntax Dasar

Menulis Kode Pabrik

Membuat Class

Gunakan keyword class diikuti nama class.

Aturan penamaan: Gunakan PascalCase (Huruf awal besar).


class Mobil {
    // Body class kosong
}
            

Membuat Object (Instansiasi)

Gunakan keyword new.


$mobilA = new Mobil();
$mobilB = new Mobil();

var_dump($mobilA); 
// object(Mobil)#1 (0) { }
            
03

Property

Data / Atribut / Sifat

Apa itu Property?

Variabel yang ada di dalam class.

Merepresentasikan data atau keadaan (state) dari objek.

Deklarasi Property

Harus diawali dengan visibility keyword (public, protected, private) atau var (jadul).


class Mobil {
    public $merk;
    public $warna;
    public $kecepatan = 0; // Default value
}
            

Mengakses Property

Gunakan tanda panah ->.


$avanza = new Mobil();

// Set nilai
$avanza->merk = "Toyota";
$avanza->warna = "Hitam";

// Ambil nilai
echo $avanza->merk; // Output: Toyota
            

Independensi Object


$brio = new Mobil();
$brio->merk = "Honda";

echo $avanza->merk; // Tetap "Toyota"
echo $brio->merk;   // "Honda"
            

Mengubah property satu objek TIDAK mempengaruhi objek lain.

04

Method

Perilaku / Fungsi / Aksi

Apa itu Method?

Fungsi yang ada di dalam class.

Merepresentasikan apa yang bisa dilakukan oleh objek tersebut.

Deklarasi Method


class Mobil {
    public function hidupkanMesin() {
        echo "Mesin menyala... Brum!";
    }

    public function jalan() {
        echo "Mobil berjalan...";
    }
}
            

Memanggil Method

Sama seperti property, gunakan tanda panah ->.


$avanza = new Mobil();
$avanza->hidupkanMesin(); 
// Output: Mesin menyala... Brum!
            
05

Keyword $this

Menunjuk Diri Sendiri

Masalah Scope

Bagaimana cara method mengakses property dalam class yang sama?


class Mobil {
    public $merk;

    public function sebutMerk() {
        // echo $merk; // ERROR! Undefined variable
    }
}
            

Solusi: $this

$this adalah variabel spesial yang merujuk pada Objek Saat Ini (Current Object).


class Mobil {
    public $merk;

    public function sebutMerk() {
        echo "Saya adalah mobil " . $this->merk;
    }
}
            

Cara Kerja $this


$a = new Mobil();
$a->merk = "Toyota";
$a->sebutMerk(); // $this merujuk ke $a -> "Toyota"

$b = new Mobil();
$b->merk = "Honda";
$b->sebutMerk(); // $this merujuk ke $b -> "Honda"
            

$this untuk Method

Kita juga bisa memanggil method lain dalam class yang sama menggunakan $this.


class Mobil {
    public function start() {
        $this->cekBensin(); // Panggil method lain
        echo "Jalan!";
    }

    public function cekBensin() { ... }
}
            
06

Studi Kasus

Produk E-Commerce

Skenario

Kita butuh class untuk merepresentasikan Produk di toko online.

Data: Nama, Harga, Stok.

Aksi: Beli (kurangi stok).

Implementasi Class


class Produk {
    public $nama;
    public $harga;
    public $stok;

    public function beli($jumlah) {
        if ($this->stok >= $jumlah) {
            $this->stok -= $jumlah;
            echo "Berhasil membeli $jumlah $this->nama";
        } else {
            echo "Stok tidak cukup!";
        }
    }
}
            

Penggunaan


$laptop = new Produk();
$laptop->nama = "MacBook Pro";
$laptop->harga = 20000000;
$laptop->stok = 10;

$laptop->beli(2); // Stok sisa 8
$laptop->beli(20); // Stok tidak cukup!
            

Type Declaration (PHP 7.4+)

Kita bisa menentukan tipe data property agar lebih aman.


class User {
    public string $name;
    public int $age;
    public bool $isActive;
}
            

Uninitialized Property

Jika property bertipe data belum diisi, mengaksesnya akan menyebabkan Fatal Error.


$u = new User();
echo $u->name; // Error: Typed property must not be accessed before initialization
            

Nullable Type

Gunakan tanda tanya ? jika property boleh kosong (null).


class User {
    public ?string $address = null;
}
            

Anonymous Class

Class tanpa nama, biasanya untuk objek sekali pakai.


$logger = new class {
    public function log($msg) { echo $msg; }
};

$logger->log("Hello");
            

Object Comparison

== : True jika property sama.

=== : True jika merujuk ke instance yang SAMA PERSIS (memori sama).

Contoh Komparasi


$a = new Mobil(); $a->merk = "X";
$b = new Mobil(); $b->merk = "X";
$c = $a;

var_dump($a == $b);  // true (Nilai sama)
var_dump($a === $b); // false (Beda objek)
var_dump($a === $c); // true (Objek sama)
            

StdClass

Class kosong bawaan PHP. Berguna untuk membuat objek generik.


$obj = new stdClass();
$obj->nama = "Budi";
            

Type Casting Array to Object


$arr = ['nama' => 'Budi', 'umur' => 20];
$obj = (object) $arr;

echo $obj->nama; // Budi
            

Best Practice: Naming

Best Practice: File

Satu file sebaiknya hanya berisi SATU Class.

Nama file harus sama dengan nama Class (`User.php` berisi `class User`).

Kesimpulan

Terima Kasih

Produksi Selesai.

1 / 40