OOP memungkinkan Anda menulis kode PHP yang lebih modular, reusable, dan mudah dipelihara. Di bab ini, kita akan mempelajari konsep dasar OOP: kelas, objek, properti, metode, dan pewarisan.
Contents
Class dan Object
- Class adalah blueprint atau cetak biru untuk membuat objek.
- Object adalah instansi nyata dari class.
<?php
class Mobil {
public $merk;
public $warna;
}
// Membuat objek
$mobil1 = new Mobil();
$mobil1->merk = "Toyota";
$mobil1->warna = "Merah";
echo $mobil1->merk; // Output: Toyota
?>
Properti dan Metode
- Properti: variabel dalam class.
- Metode: fungsi dalam class.
<?php
class Mobil {
public $merk;
public function jalan() {
echo $this->merk . " sedang berjalan.";
}
}
$mobil1 = new Mobil();
$mobil1->merk = "Honda";
$mobil1->jalan(); // Output: Honda sedang berjalan.
?>
$thisdigunakan untuk mengakses properti dan metode dari objek saat ini.
Constructor dan Destructor
1. Constructor
Dijalankan saat objek dibuat, biasanya untuk inisialisasi properti.
<?php
class Mobil {
public $merk;
public function __construct($merk) {
$this->merk = $merk;
}
}
$mobil1 = new Mobil("Suzuki");
echo $mobil1->merk; // Output: Suzuki
?>
2. Destructor
Dijalankan saat objek dihancurkan atau skrip selesai.
<?php
class Mobil {
public function __destruct() {
echo "Objek Mobil dihancurkan.";
}
}
$mobil1 = new Mobil();
?>
Inheritance (Pewarisan)
Pewarisan memungkinkan class turunan mewarisi properti dan metode dari class induk.
<?php
class Kendaraan {
public $merk;
public function info() {
echo "Ini kendaraan merk $this->merk";
}
}
class Mobil extends Kendaraan {
public $jumlahPintu;
}
$mobil = new Mobil();
$mobil->merk = "Toyota";
$mobil->jumlahPintu = 4;
$mobil->info(); // Output: Ini kendaraan merk Toyota
?>
Visibility: public, private, protected
- public → bisa diakses dari mana saja
- private → hanya bisa diakses di dalam class
- protected → bisa diakses di class dan subclass
<?php
class Mobil {
public $merk;
private $harga;
public function setHarga($harga) {
$this->harga = $harga;
}
public function getHarga() {
return $this->harga;
}
}
$mobil = new Mobil();
$mobil->merk = "Honda";
// $mobil->harga = 50000; // Error, private
$mobil->setHarga(50000);
echo $mobil->getHarga(); // Output: 50000
?>
Static Properties & Methods
- Static tidak memerlukan objek untuk diakses.
- Cocok untuk fungsi atau data yang berlaku untuk semua objek.
<?php
class MathHelper {
public static $pi = 3.14;
public static function luasLingkaran($r) {
return self::$pi * $r * $r;
}
}
echo MathHelper::$pi; // Output: 3.14
echo MathHelper::luasLingkaran(5); // Output: 78.5
?>
Namespace dan Autoloading Dasar
1. Namespace
Digunakan untuk menghindari konflik nama class.
<?php
namespace App\Models;
class User {
public $nama;
}
?>
2. Autoloading
PHP dapat memuat class secara otomatis menggunakan spl_autoload_register().
<?php
spl_autoload_register(function ($class) {
include $class . ".php";
});
$user = new App\Models\User();
?>
Dengan OOP dan namespace, kode menjadi lebih terstruktur, modular, dan mudah digunakan kembali.