earc / data-primary-key-generator
eArc - 显式架构框架 - 数据主键生成组件
This package is auto-updated.
Last update: 2024-09-08 03:36:27 UTC
README
earc/data抽象的主键生成器。
目录
安装
使用composer安装earc/data-primary-key-generator库。
$ composer require earc/data-primary-key-generator
基本用法
初始化主键生成器
在您的index.php、bootstrap或配置脚本中初始化earc/data抽象。
use eArc\Data\Initializer; Initializer::init();
然后注册earc/data-primary-key-generator到earc/data的onAutoPrimaryKey事件。
use eArc\Data\ParameterInterface; use eArc\DataPrimaryKeyGenerator\PrimaryKeyGenerator; di_tag(ParameterInterface::TAG_ON_AUTO_PRIMARY_KEY, PrimaryKeyGenerator::class);
现在earc/data已经准备好使用earc/data-primary-key-generator为您的实体生成UUID作为主键。
如果您想生成递增主键,您必须决定在哪里缓存实体类的最大键。您可以选择文件系统或Redis服务器。
使用Redis服务器
要使用Redis服务器,将基础设施参数设置为USE_REDIS。
use eArc\DataPrimaryKeyGenerator\ParameterInterface; use eArc\DataPrimaryKeyGenerator\PrimaryKeyGenerator; di_set_param(ParameterInterface::INFRASTRUCTURE, PrimaryKeyGenerator::USE_REDIS);
默认情况下,earc/data-primary-key-generator使用localhost和php-redis扩展的默认值。您可以覆盖这些默认值
use eArc\DataPrimaryKeyGenerator\ParameterInterface; di_set_param(ParameterInterface::REDIS_CONNECTION, ['127.0.0.1', 6379]);
此数组作为参数传递给Redis::connect()方法。有关有效值和配置选项,请参阅phpredis文档。
现在earc/data已经准备好使用earc/data-primary-key-generator为您的实体生成递增主键。
使用文件系统
要使用文件系统,将基础设施参数设置为USE_FILESYSTEM。
use eArc\DataPrimaryKeyGenerator\ParameterInterface; use eArc\DataPrimaryKeyGenerator\PrimaryKeyGenerator; di_set_param(ParameterInterface::INFRASTRUCTURE, PrimaryKeyGenerator::USE_FILESYSTEM);
然后配置earc/data-filesystem桥接器的数据文件系统路径。
use eArc\DataFilesystem\ParameterInterface; di_set_param(ParameterInterface::DATA_PATH, '/path/to/save/the/entity/data');
现在earc/data已经准备好使用earc/data-primary-key-generator为您的实体生成递增主键。
确定键生成策略
支持两种主键生成策略。
- 使用UUIDs
- 为每个实体类递增一个正整数
每种策略都有其优缺点
- UUIDs是全球唯一的。
- 递增整数键需要的空间较少,并且给实体提供了自然顺序,但此策略需要一个基础设施来缓存类的最大主键。
可以在实体类中分别通过实现AutoincrementPrimaryKeyInterface或AutoUUIDPrimaryKeyInterface来确定键生成策略。
use eArc\Data\Entity\AbstractEntity; use eArc\DataPrimaryKeyGenerator\AutoincrementPrimaryKeyInterface; use eArc\DataPrimaryKeyGenerator\AutoUUIDPrimaryKeyInterface; class MyEntityUUID extends AbstractEntity implements AutoUUIDPrimaryKeyInterface { public function setPrimaryKey(?string $primaryKey): void { $this->primaryKey = $primaryKey; } } class MyEntityAutoincrementPK extends AbstractEntity implements AutoincrementPrimaryKeyInterface { public function setPrimaryKey(?string $primaryKey): void { $this->primaryKey = $primaryKey; } }
或者可以通过设置DEFAULT_INTERFACE参数全局确定
use eArc\DataPrimaryKeyGenerator\AutoincrementPrimaryKeyInterface; use eArc\DataPrimaryKeyGenerator\ParameterInterface; di_set_param(ParameterInterface::DEFAULT_INTERFACE, AutoincrementPrimaryKeyInterface::class);
这提供了一个回退,如果没有接口存在。当然,earc/data库的AutoPrimaryKeyInterface必须实现以触发onAutoPrimaryKey事件。
use eArc\Data\Entity\AbstractEntity; use eArc\Data\Entity\Interfaces\PrimaryKey\AutoPrimaryKeyInterface; class MyEntityAutoincrementPK extends AbstractEntity implements AutoPrimaryKeyInterface { public function setPrimaryKey(?string $primaryKey): void { $this->primaryKey = $primaryKey; } }
高级用法
Redis哈希键的命名
如果您与Redis服务器一起使用递增策略,earc/data-primary-key-generator使用redis哈希来缓存实体类的最大键。默认情况下,哈希键命名为earc-data-pk-gen。如果您需要其他名称来管理Redis命名空间,您可以覆盖默认值
use eArc\DataPrimaryKeyGenerator\ParameterInterface; di_set_param(ParameterInterface::HASH_KEY_NAME, 'my-hash-key-name');
文件系统目录的命名
如果您与文件系统一起使用递增策略,earc/data-primary-key-generator使用@earc-data-pk-gen后缀扩展earc/data-filesystem的文件系统实体路径以缓存实体类的最大主键。您可以通过设置DIR_NAME_POSTFIX参数来更改此值。
use eArc\DataPrimaryKeyGenerator\ParameterInterface; di_set_param(ParameterInterface::DIR_NAME_POSTFIX, '@my-dir-name-postfix');
版本发布
版本 0.0
- 第一个官方版本
- PHP ^8.0