Jeder hat seine eigenen Vorlieben. Ich bevorzuge es, meine DB-Einstellungen in einer .ini-Datei außerhalb der Webroot zu speichern und ihr dann einen chmod-Wert von 0600 zuzuweisen, um zu verhindern, dass jemand außer dem Eigentümer sie liest.
Eine Beispiel-.ini-Datei sieht folgendermaßen aus:
[database]
driver = mysql
host = localhost
;port = 3306
schema = yourdbname
username = dbusername
password = some_pass
Dann können Sie die PHP-Funktion parse_ini_file
verwenden
dann lesen Sie das in Ihrem Konstruktor einfach ein und parsen es in ein 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']);
}
Und Viola, Sie haben eine einfache und sichere Möglichkeit, Ihre Datenbankverbindung einzurichten. Diese Klasse wurde von einer PDO-Extender-Klasse übernommen, wenn Sie also PDO nicht verwenden, müssen Sie diese Zeile ändern, aber wie Sie sehen können, erhalten Sie den Benutzernamen usw. in einem $settings
Reihe.
Ich würde DRINGEND vermeiden, irgendeine Art von Datenbankinformationen in einem CONSTANT
zu speichern oder GLOBAL
Variable eingeben. Auf diese Weise werden die $settings
ist nur für diese Klassenfunktion und sonst nichts verfügbar und bietet eine zusätzliche Sicherheitsebene.