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

标签 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 文件时,我多次陷入这个问题。

最佳答案

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

关于php - 如何动态处理 yaml 文件中的 UNIX/Windows 目录分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42690862/

相关文章:

PHP explode 并将缺失的部分设置为空字符串

php - 使用 Zend_PDF 将 PDF 放入另一个 PDF 文档中

c++ - 绝对路径...困惑(ubuntu)

path - 如何在贝塞尔路径上进行几何高级操作?

html - 如何找到css的图像路径

php - 在 php 中循环遍历 JSONArray 的值

php - 如何使用 Symfony 上的 Doctrine MongoDB 文档的策略增量设置 Id 的起始值?

linux - 如何处理DISPLAY=:0. 0

design-patterns - 是否有将 "options"添加到类的模式?

debugging - 如何将 Pry 提示设置为当前时间戳?