rkr / key-value-stores
常见键值存储的标准接口。
Requires
- php: >= 5.3
Requires (Dev)
- phpunit/phpunit: ~3.7
This package is auto-updated.
Last update: 2024-08-29 04:12:23 UTC
README
该项目旨在为常见的键值存储(如memcache、redis等)提供标准接口。如果特定驱动程序的作者针对这些接口进行开发,则可以在接口实现的地方使用。该项目不提供对现有存储的具体实现。
常见接口
存储
简单版本的键值存储提供设置、获取和删除条目的方法。还有一个方法来测试条目是否存在。
interface ReadWriteStore
public function has($key);
public function get($key, $default=null);
public function set($key, $value);
public function remove($key);
ReadWriteStore
接口没有自己的方法。它扩展了两个接口ReadableStore
和WritableStore
,这两个接口又从其他更基本接口扩展而来。背后的思想在这里描述。
存储的行为
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
。
标准测试
存储作者可以使用提供的标准测试来确保兼容性。到目前为止,只有对ReadWriteStore
和Contexts
的测试。这些测试基于phpunit 3.7
。
通过composer安装
composer require "rkr/php-key-value-stores" "~v0.0"