我目前正在编写自己的PHP框架(为了好玩,而不是为了使命关键的东西),我试图添加功能,用户可以设置框架应该使用的数据库(一个主数据库,然后可能有一个或两个后备-如sqlite),某些文件的位置等。我应该使用YAML吗?是否有更好的方法或标准做法?
我的想法
- YAML在可读性方面是用户(非技术)友好的
1.为了使我的Framework不需要非标准的PHP库,我必须使用类似Symfony YAML的东西来解析文件。 - Symfony不是要离开YAML了吗?
1.我可以使用一个充满变量的PHP文件,但这会使框架的设置对用户不那么透明。
更新
我正在整理这个问题,使它更具建设性,并纳入我得到的一些答案。
所有问题
- YAML与其他方法(如XML或INI文件设置)相比有什么优势?
1.关于何时使用YAML而不是其他方法,或者反之亦然,有什么好的经验法则?
6条答案
按热度按时间3xiyfsfu1#
否
个人经验。YAML似乎是一个很棒的想法,我喜欢它和它的简单性。于是,我开始投入时间:能够用一种语言阅读并用另一种语言写作的概念非常诱人,但是......简而言之,这只是一种幻想,没有事实根据。
YAML的每个实现都与其他实现有很大的不同。
引用是强大的,但是:
因此,它们经常被大多数解析器忽略,* 并被忽略。
总而言之,标准没有很好地设定。
有一些核心概念很好,很简单,但实际的标准文档充满了关于**功能的细节,大多数人不想使用这些功能,实现起来很困难,也很昂贵。
没有 *
使用替代
*JSON,如果您将 * 跨语言数据交换语言 * 和 * 小冗余 * 方面视为最高优先级
*INI如果你看重 * 性能和向后兼容性 ( 在PHP上 *,因为
parse_ini_file()
很快,而且从那以后...总是)和 * 可读性/人类编辑性 *,而不是。azpvetkf2#
我个人的偏好是一个基于PHP的配置文件。
我知道php,所以对我来说,学习yaml只是为了配置文件是额外的工作,当你可以有一个简单的配置文件,像这样,这在本质上是没有困难的yaml,并不需要一个特殊的解释器库,只是包括('php'),你走了
然后你可以像这样引用配置设置
下一步是保持配置文件简单,存储所需的最小量的配置数据,然后使用数据库存储其余的,并为最终用户提供管理屏幕以更改应用程序中的设置。
ohtdti5x3#
我对配置文件格式进行了更多的挖掘,并发现了YAML格式的有趣事实。
主要是它没有什么缺点
1)它涉及安装和配置额外的PHP库,因为YAML模块默认情况下不会出现,或者必须与Symphony框架解耦并使用它。
2)读写性能是所有配置技术中最差的,如果与INI,XML,JSON相比。与INI文件http://konrness.com/php5/zend_config-benchmark-json-array-ini-xml-yaml/相比,
3)可读性不是很好,与INI和XML格式相比。当它变得很大,然后很难阅读和管理与人道的眼睛。
4)与INI和JSON相比有点大。
所以最好使用INI格式而不是YAML。
omjgkv6w4#
如果你正在编写一个框架,那么是的。你将不得不在你的部分做更多的工作,但框架的目标是让开发应用程序的人更容易。
Symfony不是要离开YAML了吗?
不,Symony2几乎完全由YAML配置。
z4bn682m5#
使用JSON好主意
用于加载配置文件
用于写入配置文件
if (file_put_contents('path/to/file', json_encode($dat))) { echo "<h4 class='alert alert-success'>config updated</h4>"; }
最后一件事,如果你在网络根使用此.htaccess
ippsafx76#
我通常做的是创建一个XML文件,然后创建一个非依赖的前端来修改XML文件中的设置。