是否有可能创建一个包含类内可见的全局变量的配置文件?与此类似的东西:
配置.php:
$config['host_address'] = 'localhost';
$config['username '] = 'root';
$config['password'] = 'root';
$config['name'] = 'data';
db.php:
include('config.php');
class DB
{
private $_config = array($config['host_address'], $config['username'], $config['password'], $config['name']);
...
目前财产:
private $ _config = array();
我不想通过构造函数传输到我的单例数据库连接器:
DB::getInstance(array('localhost', 'root', 'root', 'data'));
每个人都有自己的喜好。我更喜欢将我的数据库设置存储在 webroot 之外的 .ini 中,然后给它一个 0600 chmod 值,以防止除所有者之外的任何人读取它。
.ini 示例如下:
[database]
driver = mysql
host = localhost
;port = 3306
schema = yourdbname
username = dbusername
password = some_pass
然后就可以使用php函数了parse_ini_file然后在你的构造函数中你只需读取它并将其解析为一个数组:
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']);
}
和 viola,您有一个简单而安全的方法来设置数据库连接。这个类取自 PDO 扩展类,所以如果您不使用 PDO,您需要更改该行,但是正如您所看到的,您在$settings
array.
我会高度避免将任何类型的数据库信息存储到CONSTANT
or GLOBAL
类型变量。这样,将$settings
仅适用于该类函数,不能用于其他函数,从而提供了额外的安全层。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)