Alle har deres egne præferencer. Jeg foretrækker at gemme mine DB-indstillinger i en .ini uden for webroot og derefter give den en 0600 chmod værdi, for at forhindre andre end ejeren i at læse den.
Et eksempel på .ini vil se sådan ud:
[database]
driver = mysql
host = localhost
;port = 3306
schema = yourdbname
username = dbusername
password = some_pass
Så kan du bruge php-funktionen parse_ini_file
så læser du det i din konstruktør og parser det til et 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']);
}
Og viola, du har en enkel og sikker måde at opsætte din databaseforbindelse på. Denne klasse blev taget fra en PDO extender-klasse, så hvis du ikke bruger PDO, skal du ændre den linje, men som du kan se, får du brugernavnet osv. i en $settings
array.
Jeg ville MEGET undgå at gemme nogen form for databaseinformation i en CONSTANT
eller GLOBAL
type variabel. På denne måde er $settings
er kun tilgængelig for den klassefunktion og intet andet, hvilket giver en ekstra smule sikkerhedslag.