如何创建全局配置文件?

2023-11-24

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

配置.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(使用前将#替换为@)

如何创建全局配置文件? 的相关文章

  • 在 WHERE 子句中使用 mysql SUM()

    假设我有这张桌子 id cash 1 200 2 301 3 101 4 700 我想返回第一行 其中之前所有现金的总和大于某个值 例如 如果我想返回第一行 其中之前所有现金的总和大于 500 则应该返回到第 3 行 如何使用 mysql
  • 使用 2 个商户账户的 1 笔交易

    我需要设置一个账单支付系统 以允许使用 2 个商家帐户进行 1 笔交易 例如 1 个商家帐户附加到接收资金的客户 假设 30 美元的购买费用 并且附加我们将向帐单支付服务提供商收取 3 美元的帐单支付费用 因此 资金需要转入 2 个独立的商
  • JS 中的模板?

    我们都喜欢简单 结构化且易于遵守的代码 我们试图在外观和逻辑之间带来差异 例如 在 PHP 中 我们可以使用模板机制 即创建一个带有 php 标签的 html 格式的文件 该文件使用一些预定义的变量 这些变量可以通过逻辑负责任的脚本来使用
  • php-fpm 需要在监狱环境中放置哪些系统文件才能在 ubuntu 上正常运行?

    我在 ubuntu 12 04 上使用 php5 fpm 并且为 nginx 托管的每个域都有单独的池和 chroot 位置 不过 我知道有些系统文件需要直接放在jail中 但是我需要哪些呢 我知道 dns 解析当前不起作用 并且我读过一些
  • 为什么在打开的文件上取消链接成功?

    为什么打开的文件被删除了 在 Windows Xamp 上 我收到消息 仍在工作 但在其他 PHP 服务器上 文件被删除 即使它已打开 并且我收到消息 文件已删除 我也可以从 FTP 删除文件 即使第一个脚本仍在工作 UNIX 系统通常允许
  • 如何在会话过期后自动更新数据库而不刷新我的页面

    您需要刷新或单击该代码 然后它才会转到索引页面 并且在会话过期后更新数据库之前 如何让会话过期后自动更新数据库 使用户活跃度为0 而无需刷新或点击页面 idletime 3600 after 1hr the user gets logged
  • YouTube api 的永久访问令牌?

    我已经浏览了用于身份验证的 Oauth 和 AuthSub 方法的 google 文档 并且我尝试通过 google 搜索此内容 但没有结果 对于 Facebook 您可以请求长度为 的访问令牌lifetime 这意味着您不必每隔几周就请求
  • 如何在 Windows 上以纯 PHP 形式提取 .tar 文件?

    我有一个 PHP 脚本 我想在 Windows 上运行 我需要提取 tar 文件 如何提取 tar 文件 我知道 PharData 类 它可以在 Linux 上运行 但不能在 Windows 上运行 我的脚本就死了 没有错误输出或任何东西
  • 如何使用ajax post请求将模态值插入数据库?

    查看代码 div class price div
  • Mysql Workbench 错误“系统错误:61”

    我几个月前安装了mysql 不过 我确实记得曾经成功地使用过 mysql workbench 今天我尝试启动它并收到以下错误 在 读取初始通信数据包 时失去与 MySQL 服务器的连接 系统错误 61 在文本编辑器中打开 etc mysql
  • PHPExcel - 如何使用 preg_replace 替换文本

    我正在使用 PHPExcel 将数据库中的数据提取到组织好的 Excel 工作表中 除了一件事之外 一切都运转良好 我的数据库条目有时可能包含 HTML 标记 例如 strong strong br p p 等等 所以我设法让这个 PHP
  • 如何修复在 AWS RDS 上锁定表名称创建 (errno: -1) 的 InnoDB 损坏?

    TIP Do not run ALTERMySQL Workbench 中用于 标准 TCP IP over SSH 连接的语句 最好是进入服务器并运行ALTER从那里 这样 如果您失去与服务器的连接 ALTER仍应完成其工作 我正在尝试在
  • 在 PHP 中使用重命名函数时出错

    尽管文件仍然被移动到正确的目录中 但我不断收到此错误 有人知道我为什么会收到此错误吗 Warning rename Images uploaded 1162504 56863010 jpg Images uploaded Portraits
  • PHP:注意:定义会话变量的索引未定义

    我正在制作一个带有电子邮件验证器的注册系统 您典型的 使用此代码来验证 类型的事情 我希望存储一个会话变量 以便当人们在注册页面上完成帐户注册并意外导航回该页面时 它会提醒他们需要在使用前激活帐户 使这个问题如此难以诊断的原因是我以类似的方
  • 停止警告:date() [function.date]:来自本地主机

    警告 date function date 依赖系统的时区设置是不安全的 你是required使用 date timezone 设置或 date default timezone set 函数 如果您使用任何这些方法并且仍然收到此警告 则很
  • ubuntu上rails mysql gem问题

    Ruby on Rails 我想调用本地主机上的控制器 但服务器说 缺少 mysql gem 将其添加到您的 Gemfile 中 gem mysql 2 8 1 问题 当我点击 gem list 命令时 我得到了一个包含 mysql 2 8
  • PHP 中的随机排列对象

    如何在 PHP 中对对象进行排序 我试过shuffle 但这需要一个数组 Warning shuffle expects parameter 1 to be array object given in var www index php o
  • 将字符串中每个单词的第一个字符大写,“and”、“to”等除外

    如何使字符串中每个单词的第一个字符大写接受几个我不想转换的单词 例如 和 to 等 例如 我想要这个 ucwords art and design 输出下面的字符串 艺术与设计 有可能像 strip tags text p a 我们允许 并
  • cURL 错误 28:5001 毫秒后解析超时

    我使用 WordPress 最近将我的网站从 cpanel 主机移动到带有 directadmin 面板的 Linux 服务器 转账后立即发现客户在通过EDD插件下载时出现以下错误 cURL 错误 28 5001 毫秒后解析超时 我也遇到了
  • 在 Woocommerce 中设置购物车商品价格后重新计算总计

    通过 set price 方法更改产品价格后 如何更改小计价格 现在在review order php中按旧价格计算总成本 cart php foreach WC gt cart gt get cart as cart item key g

随机推荐