Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como criar arquivo de configuração global?


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.