没有适用于所有目的的“最佳”解决方案。
以下是一些示例:
简单的 PHP 文件:
这个解决方案非常简单但不是很灵活:
您只需“定义”常量:
define('SITE_NAME', 'all about Foo');
define ('ADMIN_NAME', 'The Dude');
define ('ADMIN_MAIL', 'dude@foo.com');
专业:非常非常简单。
缺点:更改需要您编辑代码。只有平面键(没有树/注册表)
ini 文件
PHP 带有解析 ini 文件的函数。这是 php 手册中的一个示例:
; This is a sample configuration file
; Comments start with ';', as in php.ini
[first_section]
one = 1
five = 5
animal = BIRD
[second_section]
path = "/usr/local/bin"
URL = "http://www.example.com/~username"
[third_section]
phpversion[] = "5.0"
phpversion[] = "5.1"
phpversion[] = "5.2"
phpversion[] = "5.3"
您可以将其解析为多维数组:
$ini_array = parse_ini_file("sample.ini", true);
print_r($ini_array);
将输出:
Array
(
[first_section] => Array
(
[one] => 1
[five] => 5
[animal] => Dodo bird
)
[second_section] => Array
(
[path] => /usr/local/bin
[URL] => http://www.example.com/~username
)
[third_section] => Array
(
[phpversion] => Array
(
[0] => 5.0
[1] => 5.1
[2] => 5.2
[3] => 5.3
)
)
)
优点:灵活。众所周知的标准语法。
缺点:难以在后端编辑
见:http://php.net/manual/de/function.parse-ini-file.php
简单的 SQL
另一种简单的方法,但它使用数据库来存储 conig 密钥。
表结构为:
config{config_name UNIQUE KEY VARCHAR[64] ; config_value VARCHAR[128]}
这只是伪代码,如果您需要更多关于 PHP 和 SQL 的信息,请随时 google。
SQL 树
允许您创建树状结构。要存档此文件,您可以使用相同的表结构,但在键名中包含“/”:
admin/name | 'The Dude'
admin/mail | 'dude@foo.com'
然后你将你的 COMPLETE 配置加载到一个数组中并解析它:
function parseRawConfig($rawConfig){
$result = array();
foreach($rawConfig as $key => $value){
$nodeNames = explode('/',$key);
$nodeCount = count($nodes);
$node = $result;
for($i=1;$i<$nodeCount;$i++){
if(!array_key_exists($nodeNames[$i],$node)){
$node[$nodeNames[$i]] = array();
}
}
$node[$nodeNames[$nodeCount-1]] = $value;
}
return $result;
}
然后您可以像这样访问您的密钥:
echo $config['admin']['mail'];
这使得为您的后端生成漂亮的树形视图变得很容易,但要保存更改,您必须“重建”原始路径。
专业版:结构化分层数据。
缺点:复杂,难以实现,需要数据库连接
XML
将所有 conig 设置写入 xml 文件。
您可以使用特定于应用程序的 xml 或类似样式的通用注册表:
<cmsConf>
<site>all about foo</site>
<admin>
<name>The Dude</name>
<mail>dude@foo.com</mail>
</admin>
</cmsConf>
<reg>
<key name="site">all about foo</key>
<node name="admin">
<key name="name">The Dude</key>
<key name="mail">dude@foo.com</key>
</node>
</reg>
PHP 提供了大量用于读取/写入 xml 的类和函数,使用 xml 可以非常轻松地创建与其他应用程序的接口。
xml 的优缺点是一个很大的话题。用几句话来概括它们太庞大了。
重要
这些只是一些非常简单的示例,如果您选择其中一个,我建议您深入研究该主题!
我最喜欢的是 XML ;)