Pemrograman berorientasi objek (OOP) adalah salah satu pilar penting dalam dunia pemrograman modern, termasuk di PHP. Dengan memahami class dan object, seorang developer bisa menulis kode yang lebih terstruktur, mudah dipelihara, serta fleksibel untuk dikembangkan lebih lanjut. Dalam artikel ini, kita akan membahas langkah demi langkah tentang bagaimana membuat class dan object di PHP, disertai contoh nyata yang bisa langsung dipraktikkan.
Apa Itu Class dalam PHP?
Sebelum masuk ke teknis pembuatan, penting untuk memahami konsep dasar. Class dalam PHP bisa diibaratkan sebagai blueprint atau cetak biru. Blueprint ini tidak menghasilkan sesuatu secara langsung, tetapi menjadi dasar untuk membuat object.
Bayangkan kamu ingin membuat sebuah aplikasi yang mengelola data mahasiswa. Alih-alih menuliskan data berulang kali, kamu bisa membuat sebuah class bernama Mahasiswa yang berisi atribut seperti nama, nim, dan jurusan. Class ini akan berperan sebagai wadah definisi.
Mengenal Object: Perwujudan dari Class
Jika class adalah blueprint, maka object adalah wujud nyata dari blueprint tersebut. Object diciptakan berdasarkan class yang sudah dibuat. Dalam contoh sebelumnya, jika kita punya class Mahasiswa, maka object-nya bisa berupa mahasiswa1, mahasiswa2, dan seterusnya, yang masing-masing punya data berbeda.
Object inilah yang nantinya akan kita manipulasi, baik untuk menyimpan data, memanggil method, maupun menjalankan logika tertentu.
Membuat Class Sederhana di PHP
Sekarang mari masuk ke tahap implementasi. Membuat class di PHP cukup mudah dengan keyword class. Berikut contoh paling dasar:
<?php
class Mahasiswa {
public $nama;
public $nim;
public $jurusan;
}
?>
Pada contoh ini, kita membuat sebuah class bernama Mahasiswa dengan tiga properti: $nama, $nim, dan $jurusan. Properti ini bersifat public, artinya bisa diakses dari luar class.
Membuat Object dari Class
Setelah class dibuat, langkah berikutnya adalah menciptakan object menggunakan keyword new. Lihat contoh berikut:
<?php
$mahasiswa1 = new Mahasiswa();
$mahasiswa1->nama = "Budi Santoso";
$mahasiswa1->nim = "20231001";
$mahasiswa1->jurusan = "Informatika";
echo $mahasiswa1->nama; // Output: Budi Santoso
?>
Object $mahasiswa1 terbentuk dari class Mahasiswa, kemudian kita mengisi propertinya. Dengan cara ini, data menjadi lebih terstruktur dan mudah dipanggil.
Menambahkan Method pada Class
Selain menyimpan data, class juga bisa memiliki method, yaitu fungsi yang ada di dalam class. Method berfungsi untuk memberikan perilaku tertentu pada object.
<?php
class Mahasiswa {
public $nama;
public $nim;
public $jurusan;
public function tampilkanData() {
return "Nama: $this->nama, NIM: $this->nim, Jurusan: $this->jurusan";
}
}
$mahasiswa1 = new Mahasiswa();
$mahasiswa1->nama = "Ani Wijaya";
$mahasiswa1->nim = "20231002";
$mahasiswa1->jurusan = "Sistem Informasi";
echo $mahasiswa1->tampilkanData();
?>
Di sini, kita menambahkan method tampilkanData() untuk menampilkan informasi mahasiswa. Keyword $this digunakan untuk mengakses properti yang ada dalam class itu sendiri.
Constructor: Mengisi Data Secara Otomatis
Daripada mengisi properti satu per satu, PHP menyediakan fitur constructor. Dengan constructor, data bisa langsung diisi ketika object dibuat.
<?php
class Mahasiswa {
public $nama;
public $nim;
public $jurusan;
public function __construct($nama, $nim, $jurusan) {
$this->nama = $nama;
$this->nim = $nim;
$this->jurusan = $jurusan;
}
public function tampilkanData() {
return "Nama: $this->nama, NIM: $this->nim, Jurusan: $this->jurusan";
}
}
$mahasiswa2 = new Mahasiswa("Siti Lestari", "20231003", "Teknik Elektro");
echo $mahasiswa2->tampilkanData();
?>
Dengan constructor __construct, kode jadi lebih ringkas dan efisien. Data diisi langsung saat object dibuat tanpa harus menuliskan satu per satu.
Visibility: Public, Private, dan Protected
Dalam OOP, ada konsep encapsulation yang berhubungan dengan visibility (aksesibilitas properti atau method). PHP menyediakan tiga keyword penting:
- public: Bisa diakses dari mana saja (luar class, dalam class, atau turunan class).
- private: Hanya bisa diakses di dalam class itu sendiri.
- protected: Bisa diakses di dalam class dan turunan class, tetapi tidak dari luar.
Contoh:
<?php
class Mahasiswa {
private $nim;
protected $jurusan;
public $nama;
public function setNim($nim) {
$this->nim = $nim;
}
public function getNim() {
return $this->nim;
}
}
$mahasiswa3 = new Mahasiswa();
$mahasiswa3->nama = "Dewi Anggraini";
$mahasiswa3->setNim("20231004");
echo $mahasiswa3->getNim();
?>
Dengan cara ini, data lebih aman karena tidak bisa sembarangan diakses atau diubah dari luar.
Inheritance: Mewarisi Sifat dari Class Lain
Salah satu kekuatan utama OOP adalah inheritance (pewarisan). Sebuah class bisa mewarisi properti dan method dari class lain menggunakan keyword extends.
<?php
class Mahasiswa {
public $nama;
public $nim;
public function __construct($nama, $nim) {
$this->nama = $nama;
$this->nim = $nim;
}
public function tampilkanData() {
return "Nama: $this->nama, NIM: $this->nim";
}
}
class MahasiswaInformatika extends Mahasiswa {
public $jurusan = "Informatika";
public function tampilkanDataLengkap() {
return parent::tampilkanData() . ", Jurusan: $this->jurusan";
}
}
$mhsInformatika = new MahasiswaInformatika("Rahmat Hidayat", "20231005");
echo $mhsInformatika->tampilkanDataLengkap();
?>
Dalam contoh ini, class MahasiswaInformatika mewarisi semua yang ada di class Mahasiswa, lalu menambahkan properti baru.
Polymorphism: Method dengan Bentuk Berbeda
Konsep lain yang penting adalah polymorphism, yaitu kemampuan method untuk memiliki bentuk berbeda meski namanya sama. Di PHP, ini bisa dilakukan dengan overriding (menulis ulang method di class turunan).
<?php
class Dosen {
public function identitas() {
return "Saya adalah dosen.";
}
}
class DosenTetap extends Dosen {
public function identitas() {
return "Saya adalah dosen tetap.";
}
}
class DosenLuarBiasa extends Dosen {
public function identitas() {
return "Saya adalah dosen luar biasa.";
}
}
$dosen1 = new DosenTetap();
$dosen2 = new DosenLuarBiasa();
echo $dosen1->identitas(); // Output: Saya adalah dosen tetap.
echo $dosen2->identitas(); // Output: Saya adalah dosen luar biasa.
?>
Dengan polymorphism, kita bisa memiliki fleksibilitas yang lebih besar dalam mendefinisikan perilaku object.
Contoh Studi Kasus: Sistem Perpustakaan
Untuk memudahkan pemahaman, mari kita buat contoh sederhana. Anggap kita sedang membangun sistem perpustakaan digital.
<?php
class Buku {
public $judul;
public $penulis;
public function __construct($judul, $penulis) {
$this->judul = $judul;
$this->penulis = $penulis;
}
public function infoBuku() {
return "Judul: $this->judul, Penulis: $this->penulis";
}
}
class BukuDigital extends Buku {
public $ukuranFile;
public function __construct($judul, $penulis, $ukuranFile) {
parent::__construct($judul, $penulis);
$this->ukuranFile = $ukuranFile;
}
public function infoBuku() {
return parent::infoBuku() . ", Ukuran File: $this->ukuranFile MB";
}
}
$buku1 = new Buku("Laskar Pelangi", "Andrea Hirata");
$buku2 = new BukuDigital("Belajar PHP", "John Doe", 5);
echo $buku1->infoBuku();
echo "<br>";
echo $buku2->infoBuku();
?>
Dengan cara ini, sistem perpustakaan bisa mengelola berbagai jenis buku dengan mudah, baik fisik maupun digital.
