Baik, kita bedah pelan-pelan dan runtut, supaya benar-benar “nempel di kepala”, bukan cuma hafal sintaks ๐
Fokus kita SATU BARIS ini saja:
$auth = new Auth($db->conn);
1️⃣ Gambaran besar dulu (biar nggak nyasar)
Di versi OOP login kamu, biasanya ada 3 lapisan:
login.php → controller / proses
Auth.php → logic login
Database.php → koneksi DB
Perannya:
| File | Tugas |
|---|---|
| login.php | menerima input form |
| Auth.php | memeriksa user & password |
| Database.php | menyediakan koneksi database |
2️⃣ Kita urai dari PALING DALAM
๐น $db->conn
Artinya:
Ambil property
conndari object$db
Contoh isi $db->conn:
mysqli Object
Ini adalah:
- koneksi database aktif
- hasil dari
new mysqli(...)
Biasanya dibuat di Database.php:
class Database {
public $conn;
public function __construct() {
$this->conn = new mysqli("localhost", "root", "", "db_latihan");
}
}
Jadi:
$db = new Database();
$db->conn; // ๐ koneksi MySQL
3️⃣ new Auth(...) artinya apa?
Ini artinya:
Buat object baru dari class
Auth
$auth = new Auth(...);
๐ Saat object dibuat, PHP otomatis memanggil __construct()
4️⃣ Hubungannya dengan __construct di Auth.php
Biasanya Auth.php seperti ini:
class Auth {
private $conn;
public function __construct($conn) {
$this->conn = $conn;
}
}
Artinya:
AuthBUTUH koneksi database- koneksi itu dikirim dari luar
- disimpan ke
$this->conn
5️⃣ Jadi apa yang terjadi di baris ini?
$auth = new Auth($db->conn);
๐ Urutan kejadian SEBENARNYA
$db->conn→ koneksi database- Dikirim ke
__construct($conn) - Masuk ke
$this->conn - Object
Authsiap dipakai
๐ฆ Secara visual:
$db->conn ───▶ Auth::__construct($conn)
│
▼
$this->conn
6️⃣ Kenapa TIDAK buat koneksi di Auth saja?
❌ SALAH (buruk):
class Auth {
public function __construct() {
$this->conn = new mysqli(...);
}
}
❗ Ini bahaya karena:
- Tiap class bikin koneksi sendiri
- Boros
- Sulit maintenance
- Tidak reusable
7️⃣ Kenapa cara kamu SUDAH BENAR?
Karena ini menerapkan prinsip Dependency Injection (level dasar):
$auth = new Auth($db->conn);
Artinya:
- Auth tidak peduli bagaimana DB dibuat
- Auth cukup menerima koneksi
- Lebih fleksibel
- Lebih OOP
๐ก Ini ciri kode profesional
8️⃣ Analogi sederhana (biar nempel)
Bayangkan:
Database= tukang listrik$conn= listrikAuth= kulkas
$auth = new Auth($db->conn);
Artinya:
Kulkas dikasih listrik dari luar, bukan bikin pembangkit sendiri ๐
9️⃣ Bagaimana Auth pakai $this->conn?
Contoh di Auth.php:
$stmt = $this->conn->prepare($query);
๐ Auth pakai koneksi yang dikirim dari login.php
๐ Ringkasan 1 baris (inti sari)
$auth = new Auth($db->conn);
Artinya:
Buat object Auth dan suntikkan koneksi database ke dalamnya agar Auth bisa menjalankan query login
๐ Langkah selanjutnya (opsional)
Kalau mau lanjut naik level, aku bisa jelaskan:
- Kenapa property
connharusprivate - Cara bikin
BaseModelbiar lebih ringkas - Autoload class tanpa include manual
- Kenapa login logic jangan di
login.php
Tinggal bilang:
“lanjut ke level berikutnya” ๐ช
Desember 29, 2025


