定制 ramsey/identifier 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

ramsey/identifier

Composer 安装命令:

composer require ramsey/identifier

包简介

A PHP library for generating and working with identifiers, including UUIDs, ULIDs, and Snowflakes

README 文档

README

A PHP library for generating and working with identifiers

Source Code Download Package PHP Programming Language Read License Build Status Codecov Code Coverage

About

ramsey/identifier is a PHP library designed for generating, parsing, and working with a variety of unique identifiers. It provides an object-oriented interface for several industry-standard identifier formats—including UUIDs, ULIDs, and Snowflake IDs. This library emphasizes standards-compliance, interoperability, and developer ergonomics, making it easy to create and manipulate identifiers in modern PHP applications.

This project adheres to a code of conduct. By participating in this project and its community, you are expected to uphold this code.

Installation

Install this package as a dependency using Composer.

composer require ramsey/identifier

Usage

ramsey/identifier provides ways to generate industry-standard identifiers, such as UUIDs, ULIDs, and Snowflake IDs. You can do this using the provided factory classes:

use Ramsey\Identifier\Snowflake\GenericSnowflakeFactory;
use Ramsey\Identifier\Snowflake\Epoch;
use Ramsey\Identifier\Ulid\UlidFactory;
use Ramsey\Identifier\Uuid\UuidFactory;

// Create a UUID.
$uuid = (new UuidFactory())->create();

// Create a ULID.
$ulid = (new UlidFactory())->create();

// Create a Snowflake.
$snowflake = (new GenericSnowflakeFactory(1, Epoch::Unix))->create();

With UuidFactory, you may create UUIDs of different versions:

use Ramsey\Identifier\Uuid\NamespaceId;

$factory = new UuidFactory();

// Create random UUIDs (version 4).
$uuidV4 = $factory->v4();

// Create named-based UUIDs using SHA-1 hashing (version 5).
$uuidV5 = $factory->v5(NamespaceId::Url, 'https://example.com/post/1234');

// Create Unix Epoch time-based UUIDs (version 7).
$uuidV7 = $factory->v7();

You may also parse existing identifiers:

// Parse a UUID.
$uuid = (new UuidFactory())->createFromString('01977bea-d1c0-7154-87bb-6550974155c2');

// Parse a ULID.
$ulid = (new UlidFactory())->createFromString('01JXXYNME0E5A8FEV5A2BM2NE2');

// Parse a Snowflake ID.
$snowflake = (new GenericSnowflakeFactory(1, Epoch::Unix))->createFromInteger(7340580095540599922);

Each of these identifiers happen to contain the same timestamp, which we can retrieve:

echo $uuid->getDateTime()->format('Y-m-d H:i:s.v P') . "\n";
echo $ulid->getDateTime()->format('Y-m-d H:i:s.v P') . "\n";
echo $snowflake->getDateTime()->format('Y-m-d H:i:s.v P') . "\n";

This will print:

2025-06-17 03:24:36.160 +00:00
2025-06-17 03:24:36.160 +00:00
2025-06-17 03:24:36.160 +00:00

The UUID and ULID shown above have the same underlying byte values. Every version 7 UUID can also be expressed as a ULID, but not every ULID can be converted into a version 7 UUID. Similarly, Snowflake identifiers and ULIDs both encode a timestamp and randomness, but their formats are not directly interchangeable with UUIDs or each other.

if ($uuid->equals($ulid)) {
    echo "They are equal!\n";
}

if ($uuid->equals($snowflake)) {
    echo "The timestamp is the same, but they aren't equal.\n"
}

Contributing

Contributions are welcome! To contribute, please familiarize yourself with CONTRIBUTING.md.

Coordinated Disclosure

Keeping user information safe and secure is a top priority, and we welcome the contribution of external security researchers. If you believe you've found a security issue in software that is maintained in this repository, please read SECURITY.md for instructions on submitting a vulnerability report.

Copyright and License

ramsey/identifier is copyright © Ben Ramsey and Contributors and licensed for use under the terms of the GNU Lesser General Public License (LGPL-3.0-or-later) as published by the Free Software Foundation. Please see COPYING.LESSER, COPYING, and NOTICE for more information.

ramsey/identifier 适用场景与选型建议

ramsey/identifier 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 6.76k 次下载、GitHub Stars 达 60, 最近一次更新时间为 2022 年 09 月 10 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「id」 「uuid」 「identifier」 「guid」 「UID」 「snowflake」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 ramsey/identifier 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 ramsey/identifier 我们能提供哪些服务?
定制开发 / 二次开发

基于 ramsey/identifier 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 6.76k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 60
  • 点击次数: 17
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 60
  • Watchers: 3
  • Forks: 7
  • 开发语言: PHP

其他信息

  • 授权协议: LGPL-3.0-or-later
  • 更新时间: 2022-09-10