如何在yaml文件中动态处理UNIX / Windows目录分隔符

时间:2017-03-09 09:00:08

标签: php configuration path yaml

我们遇到需要在config-file.yml之一中配置路径的问题。它是CLI脚本的路径。对于UNIX / Windows,我们面临一个旧的已知问题“目录分隔符” - / - \。现在我们只想为两个操作系统配置一个路径。

目前,我们需要根据当前使用的操作系统手动切换路径。这一直打破了我们的VCS处理/应用程序稳定性。

的Unix

bin_path: path/to/script

bin_path: path\to\script

PHP superglobal DIRECTORY_SEPARATOR是否有类似占位符的内容?我们专注于一个解决方案,我们不需要在脚本中替换分隔符。使用yaml文件时,我坚持了几次这个问题。

1 个答案:

答案 0 :(得分:1)

YAML是一种数据描述语言,因此不支持从外部流入YAML文档的数据(即您可以在文档中使用的变量)。理论上你唯一能做的就是以一种允许你选择事后想要的值的方式构建你的YAML文档。例如:

bin_path:
  unix: path/to/script
  windows: path\to\script

然后,在加载文件时,您可以为当前操作系统选择适当的路径。但是,与在Windows上使用/替换\的方法相比,这似乎有些复杂。

另一个解决方案是使用为Windows或UNIX配置的一个路径,如下例所示。这样,您就不需要为每个操作系统配置特定路径。

bin_path: path/to/script

例如PHP您可以使用realpath规范化应用程序内的传递。

realpath('path/to/script'); //creates an absolute path including OS based directory separators