Każdy ma swoje preferencje. Wolę przechowywać moje ustawienia bazy danych w pliku .ini poza webrootem, a następnie nadać mu wartość chmod 0600, aby uniemożliwić odczytanie jej przez nikogo poza właścicielem.
Przykładowy plik .ini będzie wyglądał następująco:
[database]
driver = mysql
host = localhost
;port = 3306
schema = yourdbname
username = dbusername
password = some_pass
Następnie możesz użyć funkcji php parse_ini_file
następnie w swoim konstruktorze po prostu wczytujesz to i analizujesz do tablicy:
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']);
}
I viola, masz prosty i bezpieczny sposób na skonfigurowanie połączenia z bazą danych. Ta klasa została zaczerpnięta z klasy PDO Extender, więc jeśli nie używasz PDO, musisz zmienić tę linię, ale jak widzisz, nazwę użytkownika itp. otrzymasz w $settings
szyk.
BARDZO unikałbym przechowywania wszelkiego rodzaju informacji z bazy danych w CONSTANT
lub GLOBAL
typ zmiennej. W ten sposób $settings
jest dostępny tylko dla tej funkcji klasy i nic więcej, zapewniając dodatkową warstwę bezpieczeństwa.