OOP Dasar PHP

Sejauh ini, kita menulis kode PHP secara prosedural (berurutan dari atas ke bawah). Untuk project kecil, itu tidak masalah. Namun, untuk project besar (terutama saat menggunakan Laravel nanti), kita perlu menggunakan OOP (Object-Oriented Programming).

OOP adalah gaya memprogram di mana kita menganggap segalanya sebagai "Objek".

1. Analogi Class dan Objek

Bayangkan sebuah cetakan kue:

  • Class adalah cetakannya. (Satu cetakan)
  • Object adalah kue hasil cetakannya. (Bisa banyak kue dari cetakan yang sama)

Atau bayangkan denah mobil:

  • Class: Blueprint / denah mobil.
  • Object: Mobil Avanza merah, mobil Xenia putih (hasil dari denah).

2. Membuat Class Pertama

Mari buat Class Mobil yang memiliki Property (data/variabel) dan Method (kemampuan/fungsi).

<?php

// 1. Membuat Class (Cetakan)
class Mobil {
    // Property (Karakteristik)
    public $merk;
    public $warna;
    
    // Method (Kemampuan)
    public function hidupkanMesin() {
        return "Mesin {$this->merk} berwarna {$this->warna} dihidupkan! Vrooom...";
    }
}

// 2. Membuat Object (Hasil Cetakan)
$mobilSatu = new Mobil();
$mobilSatu->merk = "Toyota";
$mobilSatu->warna = "Hitam";

$mobilDua = new Mobil();
$mobilDua->merk = "Honda";
$mobilDua->warna = "Merah";

// 3. Menggunakan Object
echo $mobilSatu->hidupkanMesin(); 
// Output: Mesin Toyota berwarna Hitam dihidupkan! Vrooom...

echo "<br>";

echo $mobilDua->hidupkanMesin();
// Output: Mesin Honda berwarna Merah dihidupkan! Vrooom...

Penjelasan penting:

  • Kata kunci public berarti property/method bisa diakses dari luar class.
  • $this-> digunakan untuk merujuk pada property atau method di dalam class itu sendiri.

3. Constructor (Fungsi yang Berjalan Otomatis)

Mengisi property satu per satu ($mobilSatu->merk = "Toyota") itu merepotkan. Kita bisa menggunakan __construct(), yaitu fungsi yang otomatis berjalan saat object baru dibuat.

<?php

class User {
    public $nama;
    public $email;

    // Berjalan otomatis saat 'new User()' dipanggil
    public function __construct($inputNama, $inputEmail) {
        $this->nama = $inputNama;
        $this->email = $inputEmail;
    }

    public function sapa() {
        return "Halo, nama saya {$this->nama}, email saya {$this->email}.";
    }
}

// Jauh lebih singkat!
$user1 = new User("Ahmad Fauzi", "fauzi@mail.com");
$user2 = new User("Siti Aminah", "siti@mail.com");

echo $user1->sapa();

4. Encapsulation (Penyembunyian Data)

Dalam OOP yang baik, property sebaiknya disembunyikan (private atau protected) agar tidak sembarangan diubah dari luar class. Sebagai gantinya, kita membuat fungsi Getter dan Setter.

<?php

class RekeningBank {
    // Hanya bisa diubah dari dalam class ini!
    private $saldo = 0;

    // Method untuk menambah uang
    public function setor($jumlah) {
        if ($jumlah > 0) {
            $this->saldo += $jumlah;
            return "Setor berhasil.";
        }
        return "Jumlah setor tidak valid.";
    }

    // Method untuk melihat uang (Getter)
    public function cekSaldo() {
        return "Saldo Anda: Rp " . number_format($this->saldo, 0, ',', '.');
    }
}

$rekening = new RekeningBank();
$rekening->setor(500000);

// $rekening->saldo = 999999999; <-- ERROR! Tidak bisa hack saldo dari luar.

echo $rekening->cekSaldo(); 
// Output: Saldo Anda: Rp 500.000

5. Kenapa Harus Belajar OOP?

Jika kamu melihat kode di atas, mungkin terkesan "membuat hal simpel menjadi rumit". Ya, untuk program kecil, OOP memang terasa berlebihan.

Namun, di Laravel nanti, kamu akan sangat sering menemui hal seperti ini:

// Contoh kode Laravel (Jangan dijalankan dulu, ini hanya ilustrasi)

$user = new User();
$user->name = "Budi";
$user->email = "budi@email.com";
$user->save(); // Method untuk menyimpan ke database

// Atau mengambil data:
$semuaProduk = Product::all();

Semua framework modern berbasis PHP (Laravel, Symfony, CodeIgniter) 100% dibangun menggunakan konsep OOP. Memahami Class, Object, Property, dan Method adalah syarat mutlak sebelum terjun ke Laravel.

Selanjutnya

Konsep penting berikutnya yang menjadi tulang punggung Laravel adalah arsitektur MVC (Model-View-Controller). Mari kita pelajari di halaman selanjutnya: Konsep MVC →.