Todo mundo tem suas próprias preferências. Prefiro armazenar minhas configurações de banco de dados em um .ini fora da raiz da web e, em seguida, dar a ele um valor 0600 chmod, para evitar que qualquer pessoa, exceto o proprietário, o leia.
Um exemplo de .ini será semelhante a:
[database]
driver = mysql
host = localhost
;port = 3306
schema = yourdbname
username = dbusername
password = some_pass
Então você pode usar a função php
parse_ini_file
então, no seu construtor, você acabou de ler e analisar em uma matriz: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']);
}
E viola, você tem uma forma simples e segura de configurar sua conexão com o banco de dados. Esta classe foi retirada de uma classe extensora PDO, então se você não estiver usando PDO você precisa alterar essa linha, mas como você pode ver você obtém o nome de usuário etc em um
$settings
variedade. Eu evitaria ALTAMENTE armazenar qualquer tipo de informação de banco de dados em um arquivo
CONSTANT
ou GLOBAL
variável de tipo. Dessa forma, as $settings
está disponível apenas para essa função de classe e nada mais, fornecendo um pouco mais de camada de segurança.