news 2026/8/29 13:54:58

PHP生成唯一id

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PHP生成唯一id

安装Composer 扩展 id-generator

composer require hejunjie/id-generator

使用示例

1. Snowflake(雪花算法)

适用场景:高并发下的数据库主键、核心业务订单号(类似巨量广告线索 ID)。

use Hejunjie\IdGenerator\IdGenerator; // 基础用法(单机环境) $generator = IdGenerator::make('snowflake'); $id = $generator->generate(); // 例如:233953299479035905 // 分布式环境(强烈建议配置 Redis 锁,防止多节点并发冲突) $generator = IdGenerator::make('snowflake', [ 'redisConfig' => [ 'host' => '127.0.0.1', 'port' => 6379, 'auth' => null ] ]); $id = $generator->generate();

2. Timestamp(时间戳 ID)

适用场景:需要带业务前缀的流水号,且要求按时间排序。

$generator = IdGenerator::make('timestamp', [ 'prefix' => 'ORD', // 订单前缀 'redisConfig' => [ // 同样支持 Redis 锁防重 'host' => '127.0.0.1', 'port' => 6379, 'auth' => null ] ]); $id = $generator->generate(); // 例如:ORD1755778813238294503

3. Readable(可读 ID)

适用场景:需要直接展示给用户的单号、优惠券码等,方便人工核对。

$generator = IdGenerator::make('readable', [ 'prefix' => 'ORD', // 前缀 'randomLength' => 6 // 随机字符串长度 ]); $id = $generator->generate(); // 例如:ORD-2025-08-21-7ABP01

4. UUID

适用场景:跨系统交互、不需要排序的通用唯一标识。

$generator = IdGenerator::make('uuid', [ 'version' => 'v4' // 支持 v1 或 v4 ]); $id = $generator->generate(); // 例如:ad0f5dfc-4a3d-4c2a-853b-aa3a3d9062aa

5. 自定义策略

适用场景:有特殊的内部编码规则(如USER-随机数)。

use Hejunjie\IdGenerator\Contracts\Generator; use Hejunjie\IdGenerator\IdGenerator; // 1. 定义生成器类 class MyCustomGenerator implements Generator { public function __construct(private string $prefix = 'MY') {} public function generate(): string { return $this->prefix . '-' . random_int(1000, 9999); } public function parse(string $id): array { return ['id' => $id]; } } // 2. 注册并使用 IdGenerator::registerStrategy('custom', function (array $config) { return new MyCustomGenerator($config['prefix'] ?? 'MY'); }); $generator = IdGenerator::make('custom', ['prefix' => 'USR']); $id = $generator->generate(); // 例如:USR-4128

安装 Composer 扩展 ramsey/uuid

composer require ramsey/uuid

使用示例

<?php namespace app\api\controller; use app\common\controller\Api; use Ramsey\Uuid\Uuid; class Index extends Api { protected $noNeedLogin = ['*']; protected $noNeedRight = ['*']; public function index() { $uuid = Uuid::uuid4(); echo '<pre>'; var_dump($uuid->toString()); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 13:54:15

Tabby 5款内置插件指南:从自动填密码到SSH与串口调试

Tabby 5款内置插件指南&#xff1a;从自动填密码到SSH与串口调试 【免费下载链接】tabby A terminal for a more modern age 项目地址: https://gitcode.com/GitHub_Trending/ta/tabby Tabby是一款基于Electron的现代化终端&#xff0c;它的设计思路是把不同需求交给不同…

作者头像 李华
网站建设 2026/8/29 13:50:50

中文文本纠错的多模型协同架构设计与实践

简介&#xff1a;文本纠错是自然语言处理中的基础任务&#xff0c;其本质是结合语言统计规律、语法结构约束、语义上下文理解与风格一致性判断的综合过程。传统单模型方案在错别字识别、混淆词判别、语义错误发现等维度上存在明显能力边界。基于n-gram统计的KenLM擅长生造词检测…

作者头像 李华
网站建设 2026/8/29 13:47:21

GPT-6传闻辨析:10万亿参数与8月发布背后的开发者应对策略

GPT-6 这个称呼最近在技术社区里传得很开&#xff0c;核心说法是 OpenAI 下一代大模型的规模可能逼近 10 万亿参数&#xff0c;发布时间也被部分媒体圈到 8 月。但我建议先别急着把“10 万亿参数”和“8 月强行发布”当成确定事实。这类传闻真正有价值的不是数字本身&#xff0…

作者头像 李华
网站建设 2026/8/29 13:46:50

软件测试必知:5个高频雷区及避坑指南

我从 2019 年开始接触软件测试&#xff0c;前两年一直处于“会点点点&#xff0c;但总被开发打回缺陷”的状态。后来复盘才发现&#xff0c;很多问题根本不是测试技能不够&#xff0c;而是踩进了测试工作中最常见的几个雷区。这些雷区你问任何一个老测试&#xff0c;对方都能说…

作者头像 李华
网站建设 2026/8/29 13:42:40

AI标书写作如何拒绝说谎:RAG与可控生成防幻觉实践

这次我们来看一个很有意思的 AI 工程实践项目&#xff1a; 让 AI 投标书撰写者拒绝说谎 。 标题直译过来就是“让 AI 标书写作工具拒绝撒谎”。在真实业务场景里&#xff0c;投标书涉及企业资质、业绩案例、技术参数、服务承诺&#xff0c;每一行都可能直接影响是否中标&…

作者头像 李华