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)
- 首次发布