dereuromark/cakephp-hashid

此软件包已被废弃,不再维护。未建议替代包。

CakePHP 插件,允许使用 hashids 而不是数字主键。

安装次数: 9,726

依赖关系: 0

建议者: 0

安全: 0

星标: 36

关注者: 6

分支: 13

公开问题: 0

类型:cakephp-plugin

1.4.1 2020-02-20 19:39 UTC

This package is auto-updated.

Last update: 2023-12-16 17:51:20 UTC


README

Build Status Coverage Status Latest Stable Version Minimum PHP Version License Total Downloads Coding Standards

hashids 暴露为您的数字主键的即插即用替代品。

已弃用 此插件已被弃用,转而使用通过暴露专用字段提供的更稳健、更可靠的解决方案。请参阅 Expose 插件

一个 CakePHP 插件,用于

  • 将实际数字主键隐藏在记录之后(假设您使用非公开盐值)以供 URL、API 等使用
  • 构建简短的唯一 ID(例如,即使是 PHP_INT_MAX 2.147.483.647 也变为 lXQAALg,因此 hashid 的长度 <= 7)

此分支适用于 CakePHP 3.6+。有关详细信息,请参阅 版本映射

为什么选择 hashids?

  • 它们非常短,尤其是对于 URL
  • 它们轻量级且 快速。它们即时工作,不需要表字段,无需更改代码。除了启用行为之外,没有额外的开销。
  • 与 UUIDs 一样,您不会失去排序能力。
  • 如果您不想将数据库 ID 暴露给用户,则可以使用 hashids - 而不会影响速度 - 作为权衡特性。

为什么不使用 UUIDs?

  • 随着 DB 表的增长、复杂或重量级联接以及尤其是与 CakePHP 默认 char(36) 相比,UUIDs 可以慢 200 倍。但即使是推荐的 binary(16) 也不是理想的。
  • UUIDs 通常会完全替换主键,使得无法对那些记录进行排序。这对于同时插入的数据(相同的创建时间)尤其有问题。
  • UUIDs 通常用于仅隐藏数字主键的可见性,以表示随着时间的推移插入了多少数据。但这不是它们应该用于的目的。如果您想要跨 DB 同步数据,则它们是有用的。但它们不应被滥用于其他目的。

更新 如果结合 AIID 和 UUIDs,并且仅使用 UUIDs 进行外部查找,而保留 AIID 进行所有内部联接和操作,则这实际上并不成立。因此,Expose 插件现在完全取代了它。

演示

请参阅 https://sandbox3.dereuromark.de/sandbox/hashids

设置

composer require dereuromark/cakephp-hashid

bin/cake plugin load Hashid

使用

请参阅 文档

替代方案

参阅这篇文章,它介绍了另一种方法,该方法同时使用两种——内部使用“int”,外部使用“uuid”作为参考。