如今,许多项目使用不止一种编程/脚本语言,并且采用标准干燥传统上,如果它们需要相同的信息,则不应有单独的配置文件。经过一番小调查/etc
,发现 Ubuntu 中使用了很多不兼容的语法:
varname=value
-/etc/adduser.conf
varname: value
-/etc/debconf.conf
varname = value
-/etc/deluser.conf
$varname value
/etc/insserv.conf
varname value
-/etc/login.defs
set varname value
-/etc/lftp.conf
[section] varname = value
/etc/mke2fs.conf
section label varname value set varname value
/etc/smartd.conf
据我所知,这些都不是“Yaml 或 XML 或 JSON,”(其中之一是INI尽管)。对于需要提供简单值 ( debug = true
、welcome = "Hello world!"
、threads = 4
)、简单值数组 ( servers = [dev, test, prod]
) 以及引用其他变量的值 ( thread_msg = "Using $threads threads"
)的项目,您会推荐哪种格式(以及原因)重击,珀尔和PHP?
答案1
前 3 种是序列化格式,不是配置格式。这些格式对于机器来说很容易读写,但对于人类来说却不那么容易读写。做不是使用它们进行配置。您的用户可能会因此讨厌您。
此外,其中一些文件只是NAME value
成对的。其他文件可能不是真正的配置文件,而是 shell 文件,这意味着它们基本上可以由 shell 获取以进行处理。
我建议使用实际的配置格式,如 INI 或 Apache Style (Config::General
在 Perl 中)
Config::Any
是加载配置的 perl 模块的一个不错的选择,因为它允许用户本质上选择他们选择的格式。
答案2
我会使用一种可以由 bash 获取的格式,因为在 bash 中,读取、解析和执行其他格式并不容易,而 Perl 或多或少是一种为此类任务编写的语言,而在 PHP 中应该也很容易。