arhframe/yamlarh

将数据注入到您的格式化文件中,并导入其他格式化文件。

1.1.19 2015-09-19 16:24 UTC

This package is auto-updated.

Last update: 2024-09-12 20:11:33 UTC


README

Build Status Scrutinizer Code Quality Code Coverage SensioLabsInsight

Yamlarh 现在只是一个名字,使用这个工具,您可以将复杂的数据或其他格式化文件注入到格式化文件中(如 jsonxmlyaml)。

您可以注入到您的格式化文件中

  • 对象
  • 作用域中的常量
  • 全局作用域中的变量
  • 格式化文件中的变量

您还可以在格式化文件文件内部导入其他格式化文件以覆盖

安装

通过 Composer 显然

{
    "require": {
        "arhframe/yamlarh": "1.*"
    }
}

使用方法

use Arhframe\Yamlarh\Yamlarh;

$yamlarh = new Yamlarh(__DIR__.'/path/to/formatted/file');
$array = $yamlarh->parse();

示例

变量注入

变量注入是分层的,它将按照以下顺序查找

  1. 在带有导入的 yaml 文件中
  2. 在您的全局作用域中
  3. 在您的常量中
  4. 在 yamlarh 中设置的可访问变量中

Yaml 文件

arhframe:
  myvar1: test
  myvar2: %arhframe.myvar1%
  myvar3: %var3%
  myvar4: %VARCONSTANT%
  myvar5: %addedInYamlarh%

或 xml

<?xml version="1.0" encoding="UTF-8" ?>
<yamlarh>
    <arhframe>
        <myvar1>test</myvar1>
        <myvar2>%arhframe.myvar1%</myvar2>
        <myvar3>%var3%</myvar3>
        <myvar4>%VARCONSTANT%</myvar4>
        <myvar5>%addedInYamlarh%</myvar5>
    </arhframe>
</yamlarh>

或 json

{
  "arhframe": {
    "myvar1": "test",
    "myvar2": "%arhframe.myvar1%",
    "myvar3": "%var3%",
    "myvar4": "%VARCONSTANT%",
    "myvar5": "%addedInYamlarh%"
  }
}

PHP 文件

use Arhframe\Yamlarh\Yamlarh;
$var3 = 'testvar';
define('VARCONSTANT', 'testconstant');
$yamlarh = new Yamlarh(__DIR__.'/test.yml');
$yamlarh->addAccessibleVariable("addedInYamlarh", "var added");
$array = $yamlarh->parse();
echo print_r($array);

输出

  Array
  (
      [arhframe] => Array
          (
              [myvar1] => test
              [myvar2] => test
              [myvar3] => testvar
              [myvar4] => testconstant
              [myvar5] => var added
          )
  )

对象注入

它使用 snakeyml(Java 的 yaml 解析器)风格

arhframe:
  file: !! Arhframe.Util.File(test.php) #will instanciate this: Arhframe\Util\File('test.php') in file var after parsing

导入

导入也是分层的,最后导入的将覆盖其他导入。

默认情况下,在您的文件中使用 yar-import

file1.xml

<?xml version="1.0" encoding="UTF-8" ?>
<yamlarh>
    <arhframe>
        <var1>var</var1>
    </arhframe>
    <test>arhframe</test>
    <yar-import>file2.yml</yar-import> <!-- you can use a relative path to your yaml file or an absolute -->
</yamlarh>

file2.yml

arhframe:
  var1: varoverride
test2: var3

解析 file1.xml 后,输出将如下(为了更好地格式化,显示为 yml)

arhframe:
  var1: varoverride
test: arhframe
test2: var3

包含

您可以将一个 yaml 文件包含到另一个文件中

file1.yml

arhframe:
  var1: var
test:
  yar-include:
    - file2.yml #you can use a relative path to your yaml file or an absolute

file2.yml

test2: var3

解析 file1.yml 后,输出将如下

arhframe:
  var1: var
test:
  test2: var3

注意:您可以查看这些 测试 了解您还可以做什么。

可扩展性

添加节点

在解析和导入之后但在注入 yamlarh 之前,可以运行您的扩展。

您必须创建一个新的类,该类扩展 Arhframe\Yamlarh\YamlarhNode 并将其添加到您的 yamlarh 实例中,如下所示

//create your yamalarh instance before
$yamlarh->addNode("myNodeName", new MyYamlarhNode());

现在您可以在您的格式化文件中使用(例如)yar-myNodeName

注意yar-include 是一个节点,请参阅 IncludeYamlarhNode 以获取良好的示例。