此包的最新版本(1.1.4-alpha)没有可用的许可证信息。

Binn 文件格式的 PHP 实现。Binn 格式是一种标准化的格式,有助于在不同系统(可能用不同的语言编写)之间共享数据。它可处理高达 2GB 的文件大小。

1.1.4-alpha 2018-07-30 18:53 UTC

This package is auto-updated.

Last update: 2024-09-18 06:26:44 UTC


README

Binn 格式字符串的 PHP 实现,用于标准数据通信。

Binn 规范(在此可见)是许多标准化二进制数据存储和传输格式之一。它有助于以任何系统可读的方式存储数据,与 PHP 原生的序列化方法不同,后者只能由 PHP 本身原生读取。许多语言已有 BINN 实现,这使得在不同系统之间通信数据集变得极其有用。

上面链接的规范暗示了使用二进制补码格式化数字。需要进一步研究以了解日期应该如何格式化。随着库的增长,此说明将更新为当前信息。

二进制表示对于加密和签名很重要。Binn 格式提供了一种确定性的方法,以确保在验证加密签名或生成哈希之前,对象具有相同的精确二进制表示。

Binn 容器的操作主接口。

为了进行最基本交互和快速开始,请使用类 \JRC\binn\BinnSpecification()。此类为编码 Binn 对象和再次解码它们提供了简单的用户界面。

在此实现中,任何“对象”子类型始终以公共属性的标准类实现返回。所有“列表”和“映射”类型都返回为数组。类似地,任何具有字符串索引的数组都写入为对象,以符合 Binn 规范。容器类型始终使用字母顺序的键写入。这不是 Binn 规范的一部分,但它确保字节顺序始终是确定的,这意味着这些过程的二进制输出可以用于加密和解密而不会出现意外。(例如,可以将输出与签名进行验证)。

由于 PHP 语言的限制,一些默认值已被选中以进行盲目写入(让系统自动检测容器子类型)。例如,PHP 无法准确处理 64 位十进制数,因此此规范默认使用 FLOAT 类型而不是 DOUBLES。此外,\DateTime 对象自动设置为 DATETIME 子类型,而不是 DATE 或 TIME 子类型。

未来的实现将允许您使用特定子类型和数据构建容器。

读取 Binn 数据

//1. Load binn data (received from sender or read from file) into a variable
$binnContainerString = "\xE2\x08\x01\x03one\x01"; //BINN data is a binary string

//2. Initialize the main interface 
$binnSpecification = new \JRC\binn\BinnSpecification();

//3. Call the write method.
$nativePHPdata = $binnSpecification->read( $binnContainerString );

//4. use output in code
var_dump( $nativePHPdata->one ); //outputs: true

写入 Binn 数据

//1. Put data into a container class (array or object) with public attributes.
$a = new stdClass();
$a->one = 1;
$a->two = 2;
$a->three = new stdClass();
$a->three->cat = "cat";
$a->three->dog = "dog";

//2. Initialize the main interface 
$binnSpecification = new \JRC\binn\BinnSpecification();

//3. Call the write method.
$output = $binnSpecification->write( $a );

//4. Store output or transmit output to a recipient.