Melewati string koneksi ke kelas Anda memiliki banyak kerugian dan tidak ada manfaat. Anda berada di jalur yang benar, tetapi Anda ingin meneruskan objek database alih-alih string koneksi.
Injeksi Ketergantungan adalah cara yang baik untuk memberikan kelas Anda akses ke database, yang berarti meneruskan dependensi (yaitu objek database) ke objek yang membutuhkannya, daripada objek itu sendiri yang memperoleh ketergantungan dari semacam variabel global.
Saya menyarankan agar Anda menggunakan metode seperti setDb()
di kelas Anda untuk meneruskan objek database, lalu menyimpannya sebagai properti untuk penggunaan internal apa pun.
Misalnya, dengan asumsi Anda telah membuat objek database $db
dalam skrip inisialisasi:
class SomeClass
{
protected $db;
public function setDb($db)
{
$this->db = $db;
}
public function something()
{
// do some query on the database using $this->db
}
}
$obj = new SomeClass();
$obj->setDb($db);
$obj->something();
DI memberi Anda manfaat yang Anda sebutkan:kemampuan untuk dengan mudah mengganti db tanpa harus melakukan banyak pekerjaan dalam metode Anda. Ada manfaat lain, yaitu kemudahan pengujian.