arhframe / yamlarh
将数据注入到您的格式化文件中,并导入其他格式化文件。
1.1.19
2015-09-19 16:24 UTC
Requires
- arhframe/util: ~1.3
- symfony/yaml: 2.*
Requires (Dev)
README
Yamlarh 现在只是一个名字,使用这个工具,您可以将复杂的数据或其他格式化文件注入到格式化文件中(如 json
、xml
或 yaml
)。
您可以注入到您的格式化文件中
- 对象
- 作用域中的常量
- 全局作用域中的变量
- 格式化文件中的变量
您还可以在格式化文件文件内部导入其他格式化文件以覆盖
安装
通过 Composer 显然
{ "require": { "arhframe/yamlarh": "1.*" } }
使用方法
use Arhframe\Yamlarh\Yamlarh; $yamlarh = new Yamlarh(__DIR__.'/path/to/formatted/file'); $array = $yamlarh->parse();
示例
变量注入
变量注入是分层的,它将按照以下顺序查找
- 在带有导入的 yaml 文件中
- 在您的全局作用域中
- 在您的常量中
- 在 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 以获取良好的示例。