OOP I: Class, Object & Constructor Promotion

Class, properti, method, visibilitas, constructor promotion (PHP 8), static, konstanta class, dan magic method penting.

Part 9 dari 22 ± 55 menit Gratis

Mengapa OOP?

Pemrograman berorientasi objek (OOP) mengelompokkan data dan perilaku yang saling berkaitan ke dalam satu unit bernama class. Class adalah cetak biru; object adalah barang yang dicetak darinya. Hampir semua framework PHP modern (Laravel, Symfony) dibangun dengan OOP.

Class pertama

class Produk
{
    public string $nama;
    public int $harga;

    public function __construct(string $nama, int $harga)
    {
        $this->nama = $nama;
        $this->harga = $harga;
    }

    public function hargaDenganPpn(): float
    {
        return $this->harga * 1.11;
    }
}

$mouse = new Produk('Mouse', 75000);
echo $mouse->nama;               // Mouse
echo $mouse->hargaDenganPpn();   // 83250
  • $this menunjuk ke objek yang sedang memanggil method.
  • __construct dipanggil otomatis saat new.
  • Panah -> untuk mengakses properti/method objek.

Constructor property promotion (PHP 8.0)

Menulis properti, parameter, dan penugasan satu per satu itu berulang. PHP 8 menyingkatnya: beri visibilitas pada parameter constructor, dan properti otomatis dibuat & diisi.

class Produk
{
    public function __construct(
        public string $nama,
        public int $harga,
        private int $stok = 0,
    ) {}

    public function tambahStok(int $jumlah): void
    {
        $this->stok += $jumlah;
    }
}

Kode 12 baris menjadi 5 baris, tanpa kehilangan arti.

Visibilitas (enkapsulasi)

ModifierBoleh diakses dari
publicDi mana saja
protectedClass itu sendiri dan turunannya
privateHanya class itu sendiri

Enkapsulasi: sembunyikan data internal (private), sediakan jalur terkontrol (method) untuk mengubahnya, sehingga objek tidak pernah jatuh ke keadaan tidak valid. Contoh: tambahStok(-5) bisa menolak angka negatif, sedangkan menulis langsung ke properti tidak bisa dijaga.

static & konstanta class

class Pajak
{
    public const PPN = 0.11;

    public static function hitung(int $harga): float
    {
        return $harga * self::PPN;
    }
}

echo Pajak::PPN;              // 0.11
echo Pajak::hitung(100000);   // 11000  — tanpa membuat objek

:: dipakai untuk anggota static dan konstanta; self:: merujuk class itu sendiri. Gunakan static seperlunya (pembantu murni, pabrik objek) karena membuat kode sulit diuji bila menyimpan keadaan.

Magic method yang berguna

MethodDipanggil saat
__constructObjek dibuat
__toStringObjek diperlakukan sebagai teks (echo $obj) — otomatis mengimplementasikan Stringable di PHP 8
__get / __setMengakses properti yang tidak ada/privat (pakai hemat)
__invokeObjek dipanggil seperti fungsi

Mengenali objek

$mouse instanceof Produk;     // true
get_class($mouse);            // "Produk"
$salinan = clone $mouse;      // salin objek (objek dikirim by-handle, bukan by-value!)

Penting: objek ditugaskan dengan handle. $b = $a; membuat dua variabel yang menunjuk ke objek yang sama; ubah lewat satu, terlihat di yang lain. Pakai clone bila butuh salinan sebenarnya.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X