Senin, 29 Desember 2025

Cara Auth Mendapat Koneksi dari Database

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 conn dari 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:

  • Auth BUTUH 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

  1. $db->conn → koneksi database
  2. Dikirim ke __construct($conn)
  3. Masuk ke $this->conn
  4. Object Auth siap 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 = listrik
  • Auth = 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:

  1. Kenapa property conn harus private
  2. Cara bikin BaseModel biar lebih ringkas
  3. Autoload class tanpa include manual
  4. Kenapa login logic jangan di login.php

Tinggal bilang:

“lanjut ke level berikutnya” ๐Ÿ’ช

0 komentar:

Posting Komentar

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Press Release Distribution