与语言无关的配置文件格式

与语言无关的配置文件格式

如今,许多项目使用不止一种编程/脚本语言,并且采用标准干燥传统上,如果它们需要相同的信息,则不应有单独的配置文件。经过一番小调查/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 = truewelcome = "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 中应该也很容易。

相关内容