wikibase / internal-serialization
为 Wikibase 存储库的数据访问层提供序列化和反序列化程序
Requires
- php: ^7.0
- serialization/serialization: ~4.0|~3.2
- wikibase/data-model: ~9.0|~8.0
- wikibase/data-model-serialization: ~2.0
Requires (Dev)
- data-values/common: >=0.1 <0.5
- data-values/geo: >=1.0 <4.0
- data-values/number: >=0.1 <0.10
- data-values/time: >=0.1 <0.9
- phpmd/phpmd: ~2.3
- phpunit/phpunit: ~5.7
- wikibase/wikibase-codesniffer: ^0.5.0
This package is auto-updated.
Last update: 2024-09-17 07:58:49 UTC
README
包含为 Wikibase 存储库的数据访问层提供序列化和反序列化程序的库。
在 Packagist 上:
安装
使用此库的推荐方式是通过 Composer。
Composer
要将此包添加为项目依赖,只需在项目的 composer.json
文件中添加对 wikibase/internal-serialization
的依赖即可。以下是一个定义了对此包 2.x 版本依赖的最小 composer.json
文件示例
{
"require": {
"wikibase/internal-serialization": "~2.0"
}
}
手动
通过 git 或其他方式获取此包的代码,并获取所有依赖项。您可以在 composer.json 文件的 "require" 部分找到依赖项列表。然后负责在 src 目录中自动加载定义的类。
库使用
通过适当的工厂构造您需要的反序列化器或序列化器实例。
use Wikibase\InternalSerialization\DeserializerFactory; $deserializerFactory = new DeserializerFactory( /* ... */ ); $entityDeserializer = $deserializerFactory->newEntityDeserializer();
使用 deserialize 或 serialize 方法。
$entity = $entityDeserializer->deserialize( $myEntitySerialization );
在反序列化过程中,防止失败是良好的实践。因此,通常更好的做法是使用稍微更冗长的 try-catch 方法。
try { $entity = $entityDeserializer->deserialize( $myEntitySerialization ); } catch ( DeserializationException $ex ) { // Handling of the exception }
通过 SerializerFactory
和 DeserializerFactory
访问此库提供的服务。其余代码是实现细节,用户不允许了解。
库结构
所有 Wikibase DataModel 对象都可以序列化为一个通用格式,该格式可以从中重新构造对象。这是通过实现 Serializers\Serializer
接口的对象集来完成的。这些对象将例如 Claim
对象转换为只包含原始类型和数组的结构化数据。因此,该结构化数据可以轻松地输入 json_encode
、serialize
或类似工具。从这种序列化中重新构造对象的流程由实现 Deserializers\Deserializer
接口的对象提供。
可以通过 SerializerFactory
实例获取序列化器,可以通过 DeserializerFactory
实例获取反序列化器。不允许直接构造这些序列化器和反序列化器或了解它们(即类型提示)。这些对象是序列化内部的,可能会随时更改名称或结构。在调用 $serializerFactory->newEntitySerializer()
时,您所知道的是返回的是一个 Serializers\Serializer
实例。
该库包含处理旧版内部序列化格式的反序列化器。这些反序列化器位于Wikibase\InternalSerialization\Deserializers
,并且都以“Legacy”开头。该命名空间中剩余的反序列化器不特定于任何格式。它们检测所使用的格式,并将其转发到适当的反序列化器。因此,这些反序列化器可以处理旧版遗产格式和新的序列化格式。
DeserializerFactory
只返回可以处理旧版和新格式的反序列化器。
测试
该库附带了一组PHPUnit测试,覆盖了所有非平凡代码。您可以使用根目录中的PHPUnit配置文件运行这些测试。测试也可以通过TravisCI运行,因为根目录中提供了一个TravisCI配置文件。
作者
Wikibase 内部序列化由Jeroen De Dauw编写,部分作为Wikimedia Germany的雇员,为Wikidata项目工作。
链接
- Packagist上的Wikibase Internal Serialization
- TravisCI上的Wikibase Internal Serialization
- ScrutinizerCI上的Wikibase Internal Serialization
- OpenHub上的Wikibase Internal Serialization
另请参阅
- Wikibase 数据模型
- Wikibase 数据模型序列化(用于公共序列化格式)
- 序列化询问