rkr/key-value-stores

常见键值存储的标准接口。

0.0.3.1 2014-10-26 18:53 UTC

This package is auto-updated.

Last update: 2024-08-29 04:12:23 UTC


README

Travis

该项目旨在为常见的键值存储(如memcache、redis等)提供标准接口。如果特定驱动程序的作者针对这些接口进行开发,则可以在接口实现的地方使用。该项目不提供对现有存储的具体实现。

常见接口

存储

简单版本的键值存储提供设置、获取和删除条目的方法。还有一个方法来测试条目是否存在。

interface ReadWriteStore
	public function has($key);
	public function get($key, $default=null);
	public function set($key, $value);
	public function remove($key);

ReadWriteStore接口没有自己的方法。它扩展了两个接口ReadableStoreWritableStore,这两个接口又从其他更基本接口扩展而来。背后的思想在这里描述

Inheritance

存储的行为

has()当存储中存在键时返回true,不存在时返回false。此外,当$key不是有效的类型时,它会抛出异常(参见有效类型)。

get()返回由$key引用的条目的内容。如果条目未找到,则get()返回$default$default必须是一个value-type值。此外,当$key不是有效的键类型时,会抛出InvalidArgumentException或其派生类,而对于存储特定原因,会抛出InvalidOperationException或其派生类。

set()设置条目的值。如果相应的条目不存在,则set将创建它。如果条目已存在,则set将覆盖其内容。set()返回$this以实现流畅的接口。此外,当$key不是有效的键类型时,会抛出InvalidArgumentException或其派生类,而对于存储特定原因,会抛出InvalidOperationException或其派生类。

remove()从存储中删除条目。如果此操作失败,则抛出InvalidOperationException或其派生类,可能是由于条目缺失或其他进程失败。此外,当$key不是有效的键类型时,会抛出InvalidArgumentException或其派生类。

上下文

上下文类似于RDBMS中的表。使用上下文,您可以分离不同环境或组件的存储。因此,上下文就像是存储的中心单例仓库。

例如,可以使用上下文来定义数据库连接。由该上下文创建的每个存储都将继承该连接以及一些元数据(如果有的话)。

有效类型

有效键类型

键是有效的,如果它是字符串、整数或具有__toString()方法的对象。存储不得序列化和/或散列键以将任何对象转换为字符串。

有效值类型

值(或默认值)的有效性标准与键类型相同。默认值也可以是null

标准测试

存储作者可以使用提供的标准测试来确保兼容性。到目前为止,只有对ReadWriteStoreContexts的测试。这些测试基于phpunit 3.7

通过composer安装

composer require "rkr/php-key-value-stores" "~v0.0"