eggbe/compact

此包已被废弃,不再维护。未建议替代包。

通用对象打包和解包工具

dev-master 2021-08-05 01:57 UTC

This package is auto-updated.

Last update: 2021-09-06 00:02:23 UTC


README

这是一个轻量级、高性能的库,它以简单的方式在两个应用程序之间传输任何对象或数组。

要求

安装

以下是使用 composer 安装 Eggbe/Compact 包的简单方法

composer require eggbe/compact

使用

现在我们可以在代码的任何地方使用库的功能

$SerializedDataArray = Compactor::compact($OriginalDataArray, $FlagsCombination);

二进制标志组合定义了库在争议情况下的行为。目前只支持两个标志:Compactor::CO_STRICTCompactor::CO_ALLOW_ARRAYABLE。默认情况下始终设置 Compactor::CO_STRICT 标志。

在严格模式下,库要求所有对象实现 Able/Prototypes 包中定义的 \Able\Prototypes\IPresentable 接口。此接口提供了一种通用方式,通过简单实现 IPresentable::present() 方法将对象表示为数组。

在另一种情况下,如果提供了 Compactor::CO_ALLOW_ARRAYABLE 标志,并且对象没有实现 \Able\Prototypes\IPresentable 接口,则库会尝试通过 toArray() 方法将此对象转换为数组。如果此方法不存在,将抛出异常。

以下代码从序列化表示返回数据

$OriginalDataArray = Compactor::decompact($SerializedDataArray, $Aliaser);

库要求所有可恢复的对象实现 Able/Prototypes 包中定义的 \Able\Prototypes\IRestorable 接口。此接口提供了一种通用方式,通过简单实现 IRestorable 构造函数创建对象并填充其数据。

有时在反序列化过程中进行类重载是很重要的。请参阅 Aliaser 组件文档以获取更多信息。

许可证

此软件包在 MIT 许可证 下发布。