queryr / entity-store
为 Wikibase 实体集合提供持久化和基本查找功能
Requires
- php: >=5.5.0
- ext-pdo: *
- doctrine/dbal: ~2.5
- serialization/serialization: ~3.2
- wikibase/data-model: ~6.0|~5.0|~4.0|~3.0|~2.5
Requires (Dev)
- ext-pdo_sqlite: *
- jeroen/wikibase-data-fixtures: ~1.0|0.x,>=0.2.3
- ockcyp/covers-validator: ~0.4.0
- phpmd/phpmd: ~2.3
- phpunit/phpunit: ~5.3.0|~4.8
- squizlabs/php_codesniffer: ~2.3
- whatthejeff/nyancat-phpunit-resultprinter: ~1.2
README
为 Wikibase 实体集合提供持久化和基本查找功能。
系统依赖
- PHP 5.5 或更高版本(支持 PHP 7 和 HHVM)
- php5-sqlite(仅用于运行测试)
安装
要将此包作为本地、项目特定的依赖项添加到您的项目中,只需在项目中的 composer.json
文件中添加对 queryr/entity-store
的依赖即可。以下是一个定义了 EntityStore 1.x 依赖项的 composer.json
文件的示例。
{ "require": { "queryr/entity-store": "~1.0" } }
用法
如果您想了解数据库模式,请查看 src/EntityStoreInstaller.php
。
所有服务都是通过 EntityStoreFactory
类构建的
use Queryr\EntityStore\EntityStoreFactory; $factory = new EntityStoreFactory( $dbalConnection, new EntityStoreConfig( /* optional config */ ) );
$dbalConnection
是来自 Doctrine DBAL 的 Connection
对象。
写入值
要写入值,您需要 ItemStore
或 PropertyStore
。
$itemStore = $factory->newItemStore(); $propertyStore = $factory->newPropertyStore();
主要的写入方法是“存储文档”和“根据 ID 删除文档”。
$itemStore->storeItemRow( $itemRow ); $itemStore->deleteItemById( $itemId );
请注意,$itemRow
是由本组件定义的 ItemRow
类型。它代表项目表中行中的所有值。它不需要有完全实例化的 Wikibase DataModel EntityDocument
对象,您只需要 JSON。
除了 ItemRow
之外,还有一个 ItemInfo
,它除 JSON 外与 ItemRow
相同。(内部它们通过包私有特性 ItemRowInfo
共享代码。)
查询值
此列表不完整,主要用于让您了解此库包含的内容。要获取完整列表,请查看通过存储构建的服务及其接口。
通过 ID 获取项
$q42 = $itemStore->getItemRowByNumericItemId( 42 );
属性数据类型查找
$lookup = $factory->newPropertyTypeLookup(); $propertyType = $lookup->getTypeOfProperty( $propertyId );
列出项信息
获取前 100 项的便宜信息。
$itemInfoList = $itemStore->getItemInfo( 100, 0 );
将结果限制为类型为“书”的项,假设 424242 是“书”的数字 ID。
$itemInfoList = $itemStore->getItemInfo( 100, 0, 424242 );
列出项类型
这将获取表示系统中的项类型(“实例为”)的数字项 ID。
$itemTypes = $itemStore->getItemTypes();
运行测试
仅用于测试
composer test
仅用于样式检查
composer cs
用于完整的 CI 运行
composer ci
发行说明
版本 1.1.0(2017-02-28)
- 添加了对 Wikibase DataModel 6.x 和 5.x 的支持
版本 1.0.0(2015-11-04)
- 添加了对 Wikibase DataModel 4.x 和 3.x 的支持
- 将最小 Wikibase DataModel 版本更改为 2.5
- 添加了运行 PHPUnit、PHPCS、PHPMD 和 covers 标签验证的 ci 命令
- 添加了 TravisCI 和 ScrutinizerCI 集成
版本 0.6.2(2014-12-24)
- 不再支持 Wikibase DataModel 1.x
- 添加了
ItemStore::getIdForEnWikiPage
版本 0.6.1(2014-10-21)
- 允许与 DataModel 2.x 一起安装
版本 0.6.0(2014-10-03)
- 添加了
ItemStore::deleteItemById
- 添加了
PropertyStore::deletePropertyById
- 插入项或属性将删除任何旧版本
- ItemStore 现在索引 enwiki 站点链接
版本 0.5.4(2014-09-08)
- 为
ItemStore::getItemInfo
添加了可选的$itemType
参数
版本 0.5.3(2014-09-06)
- 添加了
ItemTypeExtractor
的实现InstanceOfTypeExtractor
版本 0.5.2(2014-09-06)
- 修复了
ItemRowFactory
中的项序列化错误
版本 0.5.1 (2014-09-06)
- 添加了
ItemStore::getItemTypes
版本 0.5 (2014-09-06)
- 移除了
ItemRow
和ItemInfo
的构造函数 - 向物品表添加了
item type
和english label
字段 - 添加了
ItemRow::getItemInfo
- 添加了
EntityPageInfo
- 添加了
ItemRowFactory
。现在应通过此类构建ItemRow
版本 0.4 (2014-08-27)
- 添加了
EntityStoreFactory
EntityStore
的构建现在是包私有- 添加了
ItemStore
和PropertyStore
,都可以通过EntityStoreFactory
构建 - 添加了
PropertyTypeLookup
,可以通过EntityStoreFactory::newPropertyTypeLookup
构建
版本 0.3.1 (2014-08-20)
- 添加了额外的方法级别文档,以获得更好的类型提示
版本 0.3 (2014-08-20)
ItemRow
和PropertyRow
现在位于Queryr\EntityStore\Rows
- 更改了
ItemRow
和PropertyRow
的构造函数签名 - 所有
EntityStore
方法现在抛出类型为EntityStoreException
的异常 - 添加了
EntityStoreException
- 添加了
PropertyInfo
和ItemInfo
- 向
EntityStore
添加了getPropertyInfo
和getItemInfo
版本 0.2 (2014-06-29)
- 将包重命名为
queryr/dump-store
为queryr/entity-store
- 将
Store
类重命名为EntityStore
- 将
StoreInstaller
类重命名为EntityStoreInstaller
EntityStore
现在在其构造函数中需要EntityStoreConfig
的实例EntityStoreInstaller
现在在其构造函数中需要EntityStoreConfig
的实例
版本 0.1 (2014-05-15)
- 首次发布