sallyx / nette-xml-adapter
Nette 依赖注入组件的 XML 适配器
v2.0.0
2020-03-31 08:54 UTC
Requires
- php: >=7.1.0
- nette/bootstrap: ~2.4
- nette/di: ~2.4
Requires (Dev)
- nette/tester: ~2.3.0
Conflicts
- nette/nette: <2.4
This package is not auto-updated.
Last update: 2024-09-25 06:52:46 UTC
README
XML 适配器可用于编写 XML 配置。感谢命名空间的使用(http://www.sallyx.org/xmlns/nette/config/1.0),您可以在同一个 XML 文件中拥有适用于您的 PHP 应用程序(Nette)和其他应用程序的通用配置。
XmlAdapter 读取 XML 文件并将其转换为 PHP 数组。
在这里查看 xml 示例: tests/Adapters/files/xmlAdapter.xml
支持的类型
关联数组
<myarray><key1>value1</key1><key2>value2</key2></myarray>
变为
[key1 => 'value1', key2=>'value2']
数字数组
<myarray array="numeric"><key>value1</key><key>value2</key></myarray>
变为 (此处忽略元素名称)
[0=>'value1',1=>'value2]
字符串、Null、数字、布尔值
<myarray array="numeric"> <x> trimmed string </x> <x space="preserve"> string with spaces </x> <x>1</x> <x number="2"/> <x bool="yes"/> <x null="null" /> </myarray>
变为
["trimmed string", " string with spaces ","1", 2, TRUE, NULL]
布尔值支持 "yes"、"true"、"on" 和 "1"
语句
<factory statement="statement"> <s><ent>DateTime</ent><args><a numeric="0" /></args></s> <s><ent>format</ent><args><a>%B</a></args></s> </factory>
等同于 neon:DateTime(0)::format("%B")
语法糖
字符串数组
<myarray array="string">1,2,3</myarray>
变为
["1", "2", "3"]
与自定义分隔符相同
<myarray array="string" delimiter=";">1;2;3</myarray>
语句
当然,您可以使用 array from string
作为语句参数。
<xxx statement="statement"> <s><ent>fooo</ent><args array="string" delimiter=";">1;2;3</args></s> </xxx>
如果只有一个参数,您不需要在 args 元素中使用元素。这些语句是等效的
<xxx statement="statement"><s><ent>fooo</ent><args><a>1</a></args></s></xxx> <xxx statement="statement"><s><ent>fooo</ent><args>1</args></s></xxx>
您可以使用 neon 语法作为语句
<xxx statement="DateTime(0)::format('%B')" />
# 使用
使用 composer 安装
composer require sallyx/nette-xml-adapter
测试
require 'vendor/autoload.php'; use Sallyx\Nette\DI\Config\Adapters\XmlAdapter; $adapter = new XmlAdapter; $file = 'vendor/sallyx/nette-xml-adapter/tests/Adapters/files/xmlAdapter.xml'; $config = $adapter->load($file); print_r($config);
在 Nette 中使用
在 $configurator = new Nette\Configurator;
之后将此行添加到您的 app/bootstrap.php 中
$xmlAdapter = new Sallyx\Nette\DI\Config\Adapters\XmlAdapter;
$configurator->addAdapter('xml', $xmlAdapter);
现在,您可以加载 XML 配置文件(与 neon 文件一起)。例如
$configurator->addConfig(__DIR__ . '/config/config.xml', Nette\Config\Configurator::AUTO);
如何将 neon 配置文件转换为 xml 配置文件
require __DIR__ . '/vendor/autoload.php'; use Nette\DI\Config\Adapters\NeonAdapter; use Sallyx\Nette\DI\Config\Adapters\XmlAdapter; $na = new NeonAdapter; $xa = new XmlAdapter; $config = $na->load('config.neon'); $xmlConfig = $xa->dump($config); // pretty output $domxml = new DOMDocument('1.0'); $domxml->preserveWhiteSpace = false; $domxml->formatOutput = true; $domxml->loadXML($xmlConfig); echo $domxml->saveXML();