У каждого свои предпочтения. Я предпочитаю хранить настройки БД в .ini вне webroot, а затем присваивать ему значение chmod 0600, чтобы никто, кроме владельца, не читал его.
Пример .ini будет выглядеть так:
[database]
driver = mysql
host = localhost
;port = 3306
schema = yourdbname
username = dbusername
password = some_pass
Затем вы можете использовать функцию php parse_ini_file
, затем в конструкторе вы просто читаете это и анализируете в массив:
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']);
}
И альт, у вас есть простой и безопасный способ настроить подключение к базе данных. Этот класс был взят из класса расширителя PDO, поэтому, если вы не используете PDO, вам нужно изменить эту строку, но, как вы видите, вы получите имя пользователя и т. Д. В массиве $settings
.
Я бы НАСТОЯТЕЛЬНО избежал сохранения информации любого типа в базе данных в переменной типа CONSTANT
или GLOBAL
. Таким образом, $settings
доступен только для этой функции класса и ничего больше, предоставляя дополнительный бит уровня безопасности.