activecollab/resistance

Resistance 是一个简单的 Redis 键管理器,用于 PHP。它不试图成为一个功能齐全的 ORM,只是为了让键空间管理变得更容易。

1.0.8 2015-04-01 10:41 UTC

This package is auto-updated.

Last update: 2024-09-05 00:57:00 UTC


README

Build Status

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,
      ]);
    }
  }

字段设置

常见字段设置

  1. map - 映射 ID 和值,并通过 getIdsBy() 方法使其可访问,
  2. protect - 保护字段不被 insert() 设置,
  3. required - 值必须不为空,
  4. unique - 确保字段值在存储中是唯一的(隐含为必填)。此设置不适用于布尔字段,

字符串字段设置

  1. format - 值必须匹配给定的格式,
  2. isEmail - 值必须是一个有效的电子邮件地址,
  3. isUrl - 值必须是一个有效的 URL,
  4. 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.phpMigration0001.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) - 从字段中删除唯一性映射,在字段被删除或不再需要标记为唯一后。

如何贡献?

贡献的五个简单步骤。

  1. 分叉仓库,
  2. 克隆到您的计算机,
  3. cd 到检出文件夹并运行 composer install 以更新依赖项,
  4. 创建并推送更改。确保您有测试在位,
  5. 发送拉取请求。

谢谢!