dana/shellconf

此包已被放弃,不再维护。没有推荐替代包。

Shell风格的配置文件编码/解码器

v0.3 2017-10-17 22:52 UTC

This package is not auto-updated.

Last update: 2022-12-23 11:46:21 UTC


README

\Dana\ShellConf 是一个PHP项目,提供了解析和操作shell风格(特别是bash风格)变量赋值的方法,对于简单的配置需求非常有用。(但请参阅下方的 理由。)

用法

通过Composer安装

composer require dana/shellconf

给定一个类似于这样的 config.sh

# comment here
MYVAR1=foo # another comment here
MYVAR2='foo bar'
MYVAR3="foo \"bar\" baz"

和一个类似于这样的 config.php

<?php

require_once __DIR__ . '/vendor/autoload.php';

$conf = new \Dana\ShellConf\ShellConf();
$conf->load('config.sh');

echo json_encode($conf->toArray(), \JSON_PRETTY_PRINT), "\n";

php config.php 将生成

{
    "MYVAR1": "foo",
    "MYVAR2": "foo bar",
    "MYVAR3": "foo \"bar\" baz"
}

有用的方法

  • load($file) — 加载配置文件 $file
  • parse($string) — 解析配置字符串 $string
  • reset() — 在 parse() 调用之间重置任何加载的变量
  • set($name, $value) — 创建并设置变量 $name$value
  • unset($name) — 取消变量 $name
  • get($name, $default) — 获取变量 $name 的值
  • toArray() — 获取所有加载的变量及其值作为数组
  • toString() — 获取所有加载的变量及其值作为bash兼容的配置字符串(例如写入文件)

理由

该项目与许多其他设计用于读取'dotenv'文件的项目极为相似,但我在心中有一些具体的目标,这些目标并不一定与它们一致

  • 其中大多数都专注于将文件加载到环境变量中,而这并不是我所需要的。我只想解析文件,可能还会写回。

  • 其中一些似乎没有以与bash完全相同的方式处理转义和反转义。

  • 其中许多项目对我来说过于复杂,支持诸如bash不兼容的扩展、变量插值、甚至命令替换等功能,这些我都不需要。

  • 我对一些与转义相关的更精细的方法以及将bash兼容的行写回感兴趣。

出于所有这些原因,我决定自己编写实现。但如果你对这些问题都不感兴趣,你绝对应该检查一下这些广泛使用的项目之一

待办事项

更多测试。