Всеки има свои собствени предпочитания. Предпочитам да съхраня моите DB настройки в .ini извън уеб корена и след това да му дам стойност 0600 chmod, за да предотвратя никого освен собственика да го чете.
Примерен .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
е достъпна само за тази функция на класа и нищо друго, осигурявайки допълнителен слой за сигурност.