php - 在 PHP 应用程序中存储系统配置的最佳方式(编码方式)是什么?

标签 php system config

注意:配置保存在 PHP 文件 config.php 中。

我看到了不同的做法,这里是一个简短的示例列表(我在这些示例中存储了数据库信息):

常量:全局,只读

define('DB_USER','user12');
define('DB_PASS','21user');

使用 GLOBALS 数组:全局的、可变的、重复的、与其他全局变量混合

$GLOBALS['DB_USER']='user12';
$GLOBALS['DB_PASS']='21user';

使用非全局数组但全局提升:可能比第二个选项更糟

$config=array(); ...

$config['DB_USER']='user12';
$config['DB_PASS']='21user';

... global $config;
    mysql_connect('localhost',$config['DB_USER'],$config['DB_PASS']);

定义类属性:(全局,可枚举)

class Config {
    public $DB_USER='user12';
    public $DB_PASS='21user';
}

条件/选项/功能:

  • 易于编码:您不想检查设置是否存在或对其进行初始化
  • 易于修改:非程序员/外行可以轻松修改设置
  • 存储在干净的地方:不与其他变量混合(可以存储在子数组中)
  • 运行时修改:在某些情况下,其他开发人员可以轻松修改现有设置

在系统运行的过程中可能需要更改配置,因此选项 1 已经不可行。第三个选项也不太干净。


在写这篇文章时,我收到了一个关于讨论是主观和封闭的警告。因此,紧跟主题并为您的回答提供正当理由。


这是一个非常明显的问题,考虑到我对不同的答案非常熟悉,您可能会问,我为什么要大惊小怪?问题是,我正在开发一个框架,与另一个框架 (*ahem* joomla *ahem*) 不同,我不想经历他们的错误,即抛出一个错误的解决方案,最终不得不改变/在未来重新定位。


编辑:首先,配置文件的位置与我无关。我将确保人们可以轻松更改位置(如果他们愿意),但这不是要求。 首先,便宜的虚拟主机不允许这样做,其次,就安全性而言,这确实不是一个好的选择。为什么?因为,框架需要知道配置在哪里。确实,通过隐蔽实现安全性是行不通的。我宁愿修复所有 RFI 和 XSS(例如),也不愿偏执地将配置文件隐藏在几层之下。

最佳答案

如果进行重新配置的人员不擅长编码,则硬编码数据可能不是一种选择。考虑使用 parse_ini_file() .

关于php - 在 PHP 应用程序中存储系统配置的最佳方式(编码方式)是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3888049/

相关文章:

php - 限制 PHP 访问根文件夹?

PHP Echo char 变量错误

c - 如何使用 write 系统调用

c++ - 使用参数从 C++ 程序调用 shell 脚本

cordova - 如何防止Phonegap应用程序切换到横向 View

php - 递归函数创建数组

PHP MySQL 之间的日期

php - 异步PHP?

java - 从 Selenium 中的配置属性文件读取值时出现空指针异常

php - ZF2 : Custom user mapper for ZfcUser module