wikibase/data-model-serialization

Wikibase数据模型序列化和反序列化工具

2.9.1 2018-12-14 09:59 UTC

README

Build Status Scrutinizer Quality Score Code Coverage Download count License

Latest Stable Version Latest Unstable Version

包含用于基本Wikibase数据模型实体类型及其组成组件的序列化和反序列化工具的库。支持的格式仅限于公共格式,即由Web API使用的格式。私有格式(如Wikibase Repo数据访问层使用的格式)的序列化代码属于其他组件。

最近更改可以在发布说明中找到。

安装

推荐使用Composer来使用此库。

Composer

要将此包添加为项目的本地依赖项,只需将wikibase/data-model-serialization添加到项目的composer.json文件中的依赖项即可。以下是一个定义此包2.0版本依赖项的composer.json文件的示例

{
	"require": {
		"wikibase/data-model-serialization": "~2.0"
	}
}

手动

通过git或其他方式获取此包的代码,并获取所有依赖项。可以在composer.json文件的"require"部分找到依赖项列表。然后,负责自动加载src目录中定义的类。

库使用

通过适当的工厂构造所需的具体反序列化器或序列化器实例。

use Wikibase\DataModel\DeserializerFactory;

$deserializerFactory = new DeserializerFactory( /* ... */ );
$itemDeserializer = $deserializerFactory->newItemDeserializer();

然后使用deserializeserialize方法。

$item = $itemDeserializer->deserialize( $myItemSerialization );

在反序列化情况下,防止失败是良好的实践。因此,通常更好的做法是使用稍微冗长的try-catch方法。

try {
	$item = $itemDeserializer->deserialize( $myItemSerialization );
} catch ( DeserializationException $ex ) {
	// Handling of the exception
}

应通过SerializerFactory和DeserializerFactory访问此库提供的服务。其余的代码是实现细节,用户不应了解。

库结构

所有Wikibase数据模型对象都可以序列化为通用格式,该格式可以从其中稍后重建对象。这是通过实现一组Serializers\Serializer对象的机制来完成的。这些对象将实例转换为仅包含原始类型和数组的结构。因此,该数据结构可以轻松地输入到json_encodeserialize或类似方法中。从此类序列化中重建对象的进程由实现Deserializers\Deserializer接口的对象提供。

可以通过SerializerFactory实例获取序列化器,可以通过DeserializerFactory实例获取反序列化器。不允许直接构造这些序列化器和反序列化器,也不允许有任何关于它们的知识(即类型提示)。这些对象是此组件的内部对象,可能会随时更改名称或结构。在调用$serializerFactory->newItemDeserializer()时,您只能知道您将获得一个Serializers\Serializer实例。

运行测试

仅用于测试

composer test

仅用于风格检查

composer cs

用于完整的CI运行

composer ci

作者

Wikibase数据模型序列化由Thomas PT作为志愿者编写,并由Jeroen De Dauw作为Wikimedia Germany员工为Wikidata项目编写。

链接

另请参阅

Phabricator 上的错误

https://phabricator.wikimedia.org/project/view/922/