我正在编写自己的PHP框架(用于踢,而不是用于关键任务的东西),我正在尝试添加功能,用户可以设置框架应该使用的数据库(一个主数据库,然后可能是一个或两个)回退 - 比如sqlite),某些文件所在的位置等等.我应该使用YAML吗?有更好的方法还是标准的做法?
我的想法
更新
我正在清理这个问题,以使其更具建设性,并纳入我得到的一些答案.
我有的总体问题
ZJR*_*ZJR 26
个人经验.YAML似乎是一个很好的主意,我很喜欢它和简单.然后我开始把时间花在它上面:能够用一种语言阅读它并在另一种语言中写入的相同概念非常诱人,但是......简而言之,它变成了一种幻觉,没有事实根据事实证明.
YAML的每个实现都与其他实现有很大不同.
支持交叉引用,但它们的实现非常粗略.
参考文献很有用,但是:
因此,大多数解析器经常会忽略它们并对它们产生错误.
总结一下,标准设置不好.
有一些核心概念很简单,但实际的标准文档中充满了大多数人不想使用的功能的详细信息,并且实现起来既困难又昂贵.
有没有一个区分兼容性的水平,好像有在DOM(DOM 1级,2级DOM等),所以每一个解析器实现者实现他觉得什么样子,对他所能承受的程度,然后删除它和它的很难辨别哪些有效,哪些无效.
JSON如果您重视交叉语言数据交换语言和少量冗余方面作为首要任务
INI,如果你重视性能和向后兼容性(在PHP上,就像parse_ini_file()快速,从那时起总是那样)和人类的可读性/可编辑性.
我个人的偏好是基于PHP的配置文件.
我知道php所以对我来说学习yaml只是为了配置文件是额外的工作,当你可以有这样一个简单的配置文件,这实际上是没有更难他们yaml,并不需要一个特殊的解释器库,只是包括(' config.php')你离开了
$config = array(
'database' => array(
'default' => array(
'name' => 'dbname',
'host' => 'localhost',
'user' => 'username',
'pass' => 'password'
)
)
);
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样引用配置设置
$host = $config['database']['default']['host'];
Run Code Online (Sandbox Code Playgroud)
下一步是保持配置文件简单,存储所需的最少量配置数据,然后使用数据库存储其余数据,并为最终用户提供管理屏幕以更改应用程序中的设置.