"将用户名/密码存储在类中对于生产代码来说不是一个好主意。"
好主意是将数据库连接设置存储在 *.ini 文件中,但您必须限制对它们的访问。例如,这种方式
my_setting.ini
[database]
driver = mysql
host = localhost
;port = 3306
schema = db_schema
username = user
password = secret
数据库连接
<?php
class MyPDO extends PDO
{
public function __construct($file = 'my_setting.ini')
{
if (!$settings = parse_ini_file($file, TRUE)) throw new exception('无法打开 ' . $file . '.');
$dns = $settings['database']['driver'] .
':host=' . $settings['database']['host'] .
((!empty($settings['database']['port'])) ? (';port=' . $settings['database']['port']) : '') .
';dbname=' . $settings['database']['schema'];
parent::__construct($dns, $settings['database']['username'], $settings['database']['password']);
}
}
?>
对于那些即使看到一个 PHP/HTML/任何其他命令也会尖叫的人,数据库连接参数可以通过人类可读的 ini 文件访问。