gpt4 book ai didi

php - 如何创建全局配置文件?

转载 作者:可可西里 更新时间:2023-11-01 06:31:57 25 4
gpt4 key购买 nike

是否有可能创建一个包含在类内部可见的全局变量的配置文件?类似这样的东西:

配置.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();

我不想通过构造函数传输到我的 Singleton 数据库连接器:

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']);
}

中提琴,你有一个简单而安全的方法来设置你的数据库连接。此类取自 PDO 扩展程序类,因此如果您不使用 PDO,则需要更改该行,但如您所见,您可以在 $settings 数组中获取用户名等。

我会极力避免将任何类型的数据库信息存储到 CONSTANTGLOBAL 类型的变量中。这样,$settings 仅可用于该类函数而无其他,提供额外的安全层。

关于php - 如何创建全局配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5971365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com