rodnaph/edhen

该包最新版本(0.16.0)没有可用的许可证信息。

编码/解码 EDN

0.16.0 2021-01-22 21:31 UTC

This package is auto-updated.

Last update: 2024-09-11 14:53:35 UTC


README

一个用于在 EDNPHP 数据结构之间编码/解码的工具。

注意

当从 EDN 转换到 PHP 时,转换是有损的,因为 EDN 支持的数据类型丰富性在 PHP 中不可用。因此,从 EDN 到 PHP 再转换回 EDN 不会丢失数据,但会丢失类型信息。

用法

接口通过 Edhen 类的一些静态函数实现。要解码一个 EDN 元素...

$element = Edhen::decode('(1 :foo [2])');

// array(1, ':foo', array(2))

如果您有包含多个元素的 EDN,可以使用 decodeAll

$elements = Edhen::decodeAll(':foo :bar :baz');

// array(':foo', ':bar', ':baz')

然后,使用 encode 函数进行编码,传递要编码的数据...

$ednString = Edhen::encode(array(1, 2));

// '[1 2]'

数据类型转换

当将 EDN 解码为 PHP...

内置标签

当将 PHP 编码为 EDN...

是否将数组转换为向量或哈希表的决定是通过检查其键来完成的。如果键中有任何非数字,则使用哈希表。

EDN 生成为一个单独的字符串,目前不支持格式化输出。应使用另一个工具进行此操作。

自定义标签处理程序

要实现自己的 标签处理程序,创建一个实现 Edhen\TagHandler 接口的类,并将其作为第二个参数传递给 decode/decodeAll

$myHandler = new MyCustomTagHandler();

$element = Edhen::decode($edn, array($myHandler));

您可以在 测试中看到一个示例

安装

Edhen 可以通过 Composer 安装。