Modul 1: Pondasi OOP PHP
Modul 01
"Bekal Wajib Sebelum Masuk ke Framework"
Pahami konsep Class, Object, Inheritance, dan Interface pada PHP. Modul ini adalah bekal mutlak sebelum Anda terjun ke dalam Framework modern seperti Laravel yang mengusung arsitektur berbasis objek secara penuh.
Anatomi Objek di PHP
01 Class & Object
Class adalah blueprint atau cetakan, sedangkan Object adalah hasil nyata (instansiasi) dari blueprint tersebut. Class berisi Property (variabel) dan Method (fungsi).
<?php
class User {
// Property
public $nama;
// Constructor (Dijalankan otomatis saat object dibuat)
public function __construct($nama) {
$this->nama = $nama;
}
// Method
public function sapa() {
return "Halo, nama saya " . $this->nama;
}
}
// Membuat Object (Instansiasi)
$kader = new User("Abdul Kader");
echo $kader->sapa(); // Output: Halo, nama saya Abdul Kader
02 Inheritance (Pewarisan)
Inheritance memungkinkan sebuah Class (Child) mewarisi property dan
method dari Class lain (Parent) menggunakan keyword extends. Ini mencegah
pengulangan kode (DRY - Don't Repeat Yourself).
<?php
class Admin extends User {
public $role = "Administrator";
public function getRole() {
return "Role saya adalah " . $this->role;
}
}
$adminKader = new Admin("Abdul Kader");
echo $adminKader->sapa(); // Memanggil method dari Parent Class
echo $adminKader->getRole(); // Memanggil method spesifik Child Class
Perhatikan kata
public di atas. Dalam OOP, itu disebut Visibility. Ada 3 jenis:
Public (bisa diakses dari mana saja), Protected (hanya
bisa diakses di dalam class itu dan turunannya), dan Private (hanya
bisa diakses murni di dalam class itu sendiri).
03 Interface (Kontrak Data)
Interface ibarat sebuah kontrak pakta. Class apapun yang mengimplementasikan (implements) interface tersebut, WAJIB memiliki method yang dideklarasikan di dalamnya. Sangat berguna di Laravel (seperti konsep Repository Pattern).
<?php
interface Logger {
public function log($message);
}
// FileLogger WAJIB memiliki method log()
class FileLogger implements Logger {
public function log($message) {
echo "Menyimpan ke file: " . $message;
}
}
// DatabaseLogger WAJIB memiliki method log()
class DatabaseLogger implements Logger {
public function log($message) {
echo "Menyimpan ke database: " . $message;
}
}
$logger = new DatabaseLogger();
$logger->log("User login berhasil.");