wikibase / database
简单的数据库抽象层
Requires
- php: >=5.3.2
This package is not auto-updated.
Last update: 2020-01-22 02:08:07 UTC
README
已弃用:此库不再开发和维护。
Wikibase 数据库
Wikibase 数据库提供了一个简单的数据库交互接口。此接口灵感来源于 MediaWiki 数据库抽象层。
Wikibase 数据库本身不执行任何困难的工作,而是包含现有数据库抽象层的适配器,如Doctrine DBAL 和 MediaWiki 数据库抽象层。
查看 Wikibase 数据库的最新变更发布说明。
要求
- PHP 5.3 或更高版本
- 当使用 MediaWiki 插件时:MediaWiki 1.21 或更高版本
- 当使用 Doctrine DBAL 插件时:DBAL 2.4 或更高版本
安装
您可以使用 Composer 下载和安装此包及其依赖项。或者您也可以简单地克隆 git 仓库并自行处理加载。
Composer
要将此包添加为本地、项目特定的依赖项,只需将 wikibase/database
的依赖项添加到项目中的 composer.json
文件中。下面是一个定义 Wikibase 数据库 0.1 依赖项的最小 composer.json
文件示例:
{ "require": { "wikibase/database": "0.1.*" } }
手动
通过 git 或其他方式获取 Wikibase 数据库代码。同时获取所有依赖项。您可以在 composer.json 文件的 "require" 部分找到依赖项列表。加载所有依赖项并包含其入口点:WikibaseDatabase.php 以加载 Wikibase 数据库库。
测试
此库包含一套 PHPUnit 测试,涵盖了所有非平凡代码。您可以使用根目录中找到的 PHPUnit 配置文件运行这些测试。这些测试也可以通过 TravisCI 运行,因为根目录中也提供了一个 TravisCI 配置文件。
运行测试
可以在不进行任何设置的情况下运行 tests/phpunit
中的测试(tests/phpunit/MediaWiki
除外)。您可以使用以下命令运行这些测试:
phpunit --testsuite=WikibaseDatabaseUnit
要包含基于 PDO 的集成测试,首先设置测试数据库(如果尚未设置)
mysql --user root -p < tests/createTestDB.sql
然后运行
phpunit --testsuite=WikibaseDatabaseStandalone
可以使用以下命令删除测试数据库
mysql --user root -p < tests/dropTestDB.sql
要运行基于MediaWiki的测试,请创建一个MediaWiki安装,并将Wikibase数据库作为一个扩展包含在内。然后运行
phpunit
使用抽象层
本节旨在让您快速了解。有关更详细的文档,请参阅各个接口的定义。
查询接口
$db->select( 'tableName' array( 'field_one', 'field_two' ), array( 'condition' => 'value', 'awesome > 9000' ) );
$db->delete( 'tableName', array( 'condition' => 'value', 'awesome > 9000' ) );
$db->update( 'tableName', array( 'field_one' => 'new value', 'field_two' => '~=[,,_,,]:3', ). array( 'condition' => 'value', 'awesome > 9000' ) );
$db->insert( 'tableName', array( 'field_one' => 'value', 'field_two' => '~=[,,_,,]:3', ) );
$db->getInsertId();
抽象层结构
该组件的所有类都位于Wikibase\Database命名空间
中,该命名空间映射到src/
目录。组件有几个子包
查询接口
本组件的主要接口是查询接口。它定义了与数据库交互的方法。这些方法包括插入、更新、删除和选择。在使用此组件时,您可能需要传递该接口实现的实例。
此包主要抽象,完全公开,且没有依赖其命名空间之外的任何内容。
插件
插件依赖于Wikibase数据库。Wikibase数据库中没有任何内容依赖于它们。
插件通常是具体和公开的。
插件:MediaWiki
各种接口的MediaWiki实现。其中大多数是MediaWiki数据库Base接口的适配器,它抽象了其中包含的不良设计。
顶级命名空间
顶级命名空间Wikibase\Database包含一些不适合更具体包的接口。
目前它包含DBConnectionProvider和LazyDBConnectionProvider,这两个都依赖于MediaWiki。这是由于遗留原因,不应依赖于这些,因为它们将被迁移。
作者
Wikibase数据库是由Jeroen De Dauw和Adam Shorland作为Wikimedia Germany的员工为Wikidata项目编写的。
还有其他人做出了贡献。
链接
- Wikibase Database在Packagist上的页面
- Wikibase Database在Ohloh上的页面
- Wikibase Database在MediaWiki.org上的页面
- Wikibase Database在TravisCI上的页面
- Wikibase Database在ScrutinizerCI上的页面