activecollab / resistance
Resistance 是一个简单的 Redis 键管理器,用于 PHP。它不试图成为一个功能齐全的 ORM,只是为了让键空间管理变得更容易。
1.0.8
2015-04-01 10:41 UTC
Requires
- php: >=5.5.0
- ext-filter: *
- ext-json: *
- ext-mbstring: *
- doctrine/inflector: ~1.0
- predis/predis: ~1.0
Requires (Dev)
- phpunit/phpunit: ~4.1
README
Resistance 是一个简单的 Redis 键管理器,用于 PHP。它不试图成为一个功能齐全的 ORM,只是为了让键空间管理变得更容易。
如何使用?
使用 Composer 将其包含到您的项目中
{ "require": { "activecollab/resistance": "~0.1" } }
实现存储
<?php namespace My\App\Storage; use Predis\Client; use ActiveCollab\Resistance\Storage\Storage; use ActiveCollab\Resistance\Storage\Field\StringField; use ActiveCollab\Resistance\Storage\Field\IntegerField; use ActiveCollab\Resistance\Storage\Field\BooleanField; /** * @package ActiveCollab\GrandCentral\Storage */ final class MyObjects extends Storage { /** * Construct a new storage instance * * @param Client $connection * @param string $application_namespace */ public function __construct(Client &$connection, $application_namespace) { parent::__construct($connection, $application_namespace); $this->setFields([ 'url' => (new StringField)->required()->unique()->isUrl()->modifier('trim'), 'is_paid' => new BooleanField, 'members_count' => new IntegerField, 'clients_count' => new IntegerField, ]); } }
字段设置
常见字段设置
map
- 映射 ID 和值,并通过getIdsBy()
方法使其可访问,protect
- 保护字段不被insert()
设置,required
- 值必须不为空,unique
- 确保字段值在存储中是唯一的(隐含为必填)。此设置不适用于布尔字段,
字符串字段设置
format
- 值必须匹配给定的格式,isEmail
- 值必须是一个有效的电子邮件地址,isUrl
- 值必须是一个有效的 URL,modifier
- 确保值在存储之前通过此回调或函数。
读取、更新、删除
使用 \ActiveCollab\Resistance::factory()
实例化它
\ActiveCollab\Resistance::factory("\My\App\Storage\MyObjects")->insert([], [], …); \ActiveCollab\Resistance::factory("\My\App\Storage\MyObjects")->update($id, []); \ActiveCollab\Resistance::factory("\My\App\Storage\MyObjects")->get($id); \ActiveCollab\Resistance::factory("\My\App\Storage\MyObjects")->getFieldValue($id, 'url'); \ActiveCollab\Resistance::factory("\My\App\Storage\MyObjects")->delete($id);
迁移
Resistance 实现了一个简单的数据迁移系统。要使用迁移,在您的项目中创建一个目录,用于存储迁移,并命名为 Migration0001.ThisIsMigrationDescription.php
或 Migration0001.php
。迁移类的名称应遵循 Migration0001
格式,并需要扩展 ActiveCollab\Resistance\Storage\Migration
类。描述部分是可选的,仅供参考。示例
/my/awesome/project/migrations/Migration0001.AddedNewField.php
/my/awesome/project/migrations/Migration0002.MappedFieldValue.php
/my/awesome/project/migrations/Migration0003.MadeFieldUnqiue.php
/my/awesome/project/migrations/Migration0004.NoLongerNeedsToBeUnique.php
您可以使用以下命令指示 Resistance 执行所有迁移
\ActiveCollab\Resistance::migrate('/my/awesome/project/migrations/', 'MyOrg\MyProject\Migrations');
第一个参数是存储迁移类的文件夹的路径,第二个参数是您的迁移命名空间。如果您没有对迁移进行命名空间(不推荐),则省略第二个参数留空。
您可以在迁移中使用的有用方法
\ActiveCollab\Resistance\Storage\Collection::bulkSetFieldValue($field_name, $value)
- 批量设置字段值。$value
可以是调用每个记录的回调,或者将存储的值转换为值,\ActiveCollab\Resistance\Storage\Collection::bulkRemoveFieldValue($field_name)
- 清理数据库中的值,通常在字段已从集合中删除后,\ActiveCollab\Resistance\Storage\Collection::buildValueMap($field_name)
- 为字段创建值映射,通常在字段已添加到集合后,\ActiveCollab\Resistance\Storage\Collection::removeValueMap($field_name)
- 从字段中删除值映射,在字段被删除或映射不再需要后,\ActiveCollab\Resistance\Storage\Collection::buildUniquenessMap($field_name)
- 为字段创建唯一性映射,通常在字段已添加到集合后,\ActiveCollab\Resistance\Storage\Collection::removeUniquenessMap($field_name)
- 从字段中删除唯一性映射,在字段被删除或不再需要标记为唯一后。
如何贡献?
贡献的五个简单步骤。
- 分叉仓库,
- 克隆到您的计算机,
cd
到检出文件夹并运行composer install
以更新依赖项,- 创建并推送更改。确保您有测试在位,
- 发送拉取请求。
谢谢!