Property dan Method di PHP : Fondasi Dasar Pemrograman Berorientasi Objek

Seputar PHP256 Views

Ketika membicarakan PHP, banyak orang langsung mengaitkannya dengan bahasa pemrograman web yang fleksibel dan mudah digunakan. Namun, salah satu kekuatan terbesar dari PHP terletak pada konsep Object-Oriented Programming (OOP) yang di dalamnya terdapat dua elemen penting: property dan method. Dua istilah ini bukan hanya sekadar kata kunci teknis, melainkan pondasi yang membuat kode lebih rapi, terstruktur, dan mudah dikembangkan dalam jangka panjang.

Apa Itu Property dalam PHP?

Property dapat diibaratkan sebagai “variabel” yang melekat pada sebuah objek. Jika dalam pemrograman prosedural kita terbiasa membuat variabel global atau lokal, maka pada OOP variabel tersebut dipindahkan ke dalam sebuah class dan disebut sebagai property.

Property biasanya digunakan untuk menyimpan data atau keadaan dari sebuah objek. Misalnya, dalam class Mobil, property bisa berupa warna, merk, atau jumlah roda. Dengan adanya property, setiap objek yang dibuat dari class tersebut dapat memiliki nilai berbeda, meskipun struktur dasarnya sama.

Contoh sederhana:

class Mobil {
    public $merk;
    public $warna;
}
  
$mobil1 = new Mobil();
$mobil1->merk = "Toyota";
$mobil1->warna = "Merah";
  
$mobil2 = new Mobil();
$mobil2->merk = "Honda";
$mobil2->warna = "Hitam";

Dari kode di atas, terlihat bahwa property $merk dan $warna dapat memiliki nilai berbeda pada setiap objek. Inilah salah satu keuntungan menggunakan property: fleksibilitas dalam mendefinisikan keadaan objek.

Jenis-jenis Property dalam PHP

Sebelum melangkah lebih jauh, penting memahami bahwa property tidak semuanya sama. PHP memberikan kontrol akses terhadap property melalui visibility. Ada tiga jenis utama:

  • Public: property dapat diakses dari mana saja, baik di dalam class maupun di luar.
  • Protected: property hanya bisa diakses dari dalam class itu sendiri dan class turunan (inheritance).
  • Private: property hanya bisa diakses dari dalam class yang mendefinisikannya.

Contoh penggunaan:

class Produk {
    public $nama;
    protected $harga;
    private $stok;
}

Dengan cara ini, developer bisa menjaga agar data tertentu tidak sembarangan diubah dari luar. Misalnya, $stok sebaiknya private agar tidak bisa dimodifikasi sembarangan.

Method: Fungsi yang Hidup dalam Class

Jika property adalah variabel, maka method bisa dianggap sebagai fungsi yang berada di dalam class. Method bertugas memberikan aksi atau perilaku pada sebuah objek. Misalnya, sebuah objek mobil tidak hanya punya property seperti warna atau merk, tetapi juga bisa memiliki method seperti jalan(), berhenti(), atau belok().

Contoh sederhana:

class Mobil {
    public $merk;
    public $warna;

    public function jalan() {
        return "Mobil $this->merk sedang berjalan.";
    }
}

$mobil1 = new Mobil();
$mobil1->merk = "Toyota";
echo $mobil1->jalan();

Kata kunci $this di dalam method berfungsi untuk mengakses property atau method lain dalam objek yang sama. Dalam contoh di atas, $this->merk akan merujuk ke property $merk milik objek yang dipanggil.

Perbedaan Fungsi Biasa dan Method

Sekilas, method mirip dengan fungsi biasa dalam PHP. Namun, ada perbedaan mendasar:

  1. Lokasi: method harus didefinisikan di dalam class, sedangkan fungsi biasa berdiri sendiri.
  2. Konteks: method bekerja dengan property dan objek tertentu, sedangkan fungsi biasa tidak memiliki konteks objek.
  3. Pemanggilan: method dipanggil melalui objek, sedangkan fungsi biasa dipanggil langsung dengan namanya.

Perbedaan ini membuat method jauh lebih kuat dalam membangun struktur aplikasi yang kompleks.

Encapsulation: Menggabungkan Property dan Method

Keindahan dari OOP adalah kemampuan untuk menggabungkan property dan method dalam satu kesatuan yang disebut encapsulation. Dengan encapsulation, data (property) dan perilaku (method) dikelola dalam satu unit yang rapat.

Sebagai contoh, sebuah class Produk tidak hanya memiliki property seperti nama dan harga, tetapi juga method seperti tampilkanDetail() atau hitungDiskon().

class Produk {
    private $nama;
    private $harga;

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

    public function tampilkanDetail() {
        return "Produk: $this->nama, Harga: Rp " . number_format($this->harga, 0, ',', '.');
    }
}

Dengan pendekatan ini, property tidak sembarangan bisa diakses dari luar, melainkan melalui method tertentu. Hal ini menjaga integritas data dan membuat kode lebih aman.

Getter dan Setter: Jembatan Akses Property

Sering kali kita butuh mengakses property private atau protected dari luar class. Untuk itulah digunakan method khusus yang disebut getter dan setter. Getter digunakan untuk mengambil nilai property, sementara setter digunakan untuk mengubah nilainya.

class Produk {
    private $nama;
    private $harga;

    public function setNama($nama) {
        $this->nama = $nama;
    }

    public function getNama() {
        return $this->nama;
    }

    public function setHarga($harga) {
        if ($harga > 0) {
            $this->harga = $harga;
        }
    }

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

Dengan getter dan setter, kita bisa menambahkan logika tambahan, misalnya validasi harga agar tidak negatif.

Static Property dan Static Method

Selain property dan method yang melekat pada objek, PHP juga mendukung static property dan static method. Keduanya dapat diakses tanpa perlu membuat objek terlebih dahulu.

class Kalkulator {
    public static $versi = "1.0";

    public static function tambah($a, $b) {
        return $a + $b;
    }
}

echo Kalkulator::$versi;  
echo Kalkulator::tambah(5, 10);

Konsep ini sangat berguna untuk utilitas umum yang tidak bergantung pada keadaan sebuah objek.

Magic Method: Sentuhan Khusus di PHP

PHP memiliki beberapa method istimewa yang disebut magic method. Method ini diawali dengan dua garis bawah, seperti __construct(), __destruct(), __get(), __set(), dan lain-lain. Magic method digunakan untuk memberikan perilaku khusus pada objek.

  • __construct(): dijalankan saat objek dibuat.
  • __destruct(): dijalankan saat objek dihancurkan.
  • __get() dan __set(): digunakan untuk mengakses property yang tidak dapat diakses langsung.

Contoh:

class User {
    private $nama;

    public function __construct($nama) {
        $this->nama = $nama;
    }

    public function __destruct() {
        echo "Objek user bernama $this->nama dihapus.";
    }
}

Magic method membuat PHP lebih dinamis dan fleksibel dalam menangani objek.

Property dan Method dalam Inheritance

Ketika berbicara tentang OOP, tidak mungkin mengabaikan konsep inheritance atau pewarisan. Dengan inheritance, sebuah class bisa mewarisi property dan method dari class lain.

class Hewan {
    public $nama;

    public function bersuara() {
        return "Hewan ini bersuara.";
    }
}

class Kucing extends Hewan {
    public function bersuara() {
        return "Meong!";
    }
}

$kucing = new Kucing();
$kucing->nama = "Kitty";
echo $kucing->nama . " berkata: " . $kucing->bersuara();

Di sini, class Kucing mewarisi property $nama dan method bersuara() dari class Hewan, lalu melakukan overriding pada method tersebut.

Property dan Method dalam Konteks Nyata

Dalam pengembangan aplikasi nyata, property dan method digunakan untuk membangun modul-modul yang kompleks. Contohnya, dalam sistem e-commerce, kita bisa memiliki class User, Produk, Keranjang, dan Transaksi.

  • User memiliki property seperti nama, email, password, dan method seperti login(), register(), atau updateProfile().
  • Produk memiliki property nama, harga, stok, serta method hitungDiskon() atau tampilkanDetail().
  • Keranjang memiliki property daftarProduk dan method tambahProduk(), hapusProduk(), atau hitungTotal().

Semua property dan method ini saling terhubung untuk membentuk aplikasi yang berfungsi secara menyeluruh.