Setiap orang memiliki preferensi mereka sendiri. Saya lebih suka menyimpan pengaturan DB saya di .ini di luar webroot dan kemudian memberikan nilai 0600 chmod, untuk mencegah siapa pun kecuali pemiliknya membacanya.
Contoh .ini akan terlihat seperti:
[database]
driver = mysql
host = localhost
;port = 3306
schema = yourdbname
username = dbusername
password = some_pass
Kemudian Anda dapat menggunakan fungsi php parse_ini_file
kemudian di konstruktor Anda, Anda baru saja membacanya dan menguraikannya menjadi array:
public function __construct($file = 'dbsettings.ini')
{
// @todo: change this path to be consistent with outside your webroot
$file = '../' . $file;
if (!$settings = parse_ini_file($file, TRUE)) throw new exception('Unable to open ' . $file . '.');
$dns = $settings['database']['driver'] .
':host=' . $settings['database']['host'] .
((!empty($settings['database']['port'])) ? (';port=' . $settings['database']['port']) : '') .
';dbname=' . $settings['database']['schema'];
// if not PDO, this part needs to be changed parent::__construct($dns, $settings['database']['username'], $settings['database']['password']);
}
Dan viola, Anda memiliki cara yang sederhana dan aman untuk mengatur koneksi database Anda. Kelas ini diambil dari kelas extender PDO, jadi jika Anda tidak menggunakan PDO, Anda perlu mengubah baris itu, tetapi seperti yang Anda lihat, Anda mendapatkan nama pengguna dll di $settings
Himpunan.
Saya akan SANGAT menghindari menyimpan semua jenis informasi basis data ke dalam CONSTANT
atau GLOBAL
variabel tipe. Dengan cara ini, $settings
hanya tersedia untuk fungsi kelas itu dan tidak ada yang lain, memberikan sedikit tambahan lapisan keamanan.