wikibase/database

此包已废弃,不再维护。未建议替代包。

简单的数据库抽象层

0.2 2014-04-28 12:43 UTC

This package is not auto-updated.

Last update: 2020-01-22 02:08:07 UTC


README

已弃用:此库不再开发和维护。

Wikibase 数据库

Build Status Scrutinizer Quality Score

在 Packagist 上:最新稳定版本 下载次数

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项目编写的。

还有其他人做出了贡献。

链接

Phabricator上的错误

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