使用nanoid来生成唯一id字符串之PHP版

一、前言概述

想必大家都应该知道uuid,它能生成不重复的唯一字符串,用于唯一标识非常实用,but在php中使用uuid是相当麻烦的。

    ①、因为需要安装uuid扩展,而且uuid扩展只支持在Linux(包括OS X)或Solaris操作系统上进行使用。(安装uuid扩展 就很麻烦了,因为 一个扩展的安装如果不顺利的话,安装过程中就会遇到各种各样的问题。但是功能很靠谱!)

    ②、而在windows系统下,如果要使用uuid,PHP提供了一个内置的 com_create_guid()函数(这是一个仅适用于Windows系统的 PHP函数。) 来实现uuid效果,需要注意的是,在php5.3或php5.4及以上高版本的php中,需要在php.ini配置文件中加载 php_com_dotnet.dll 扩展库文件才能使用 com_create_guid() 函数来进行生成uuid。安装说明见官方网站:https://www.php.net/manual/zh/com.installation.php

    ③、关于uuid的生成,mysql数据库也内置了一个可以生成uuid的函数,使用方式为:SELECT UUID(),在mysql5.7.34的版本中进行测试过,可以生成。更多说明及更多使用方式 可参考mysql官方文档:http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html#function_uuid

二、接下来要说的就是我们本片博文的主角!nanoid!

nanoid的几个特点:

  • 更轻量级。(只有 179 字节(压缩)。没有依赖关系。它使用大小限制来控制大小。)

  • 更安全。(它使用加密的强随机 API 并保证符号的正确分布)

  • 更效率。(NanoID 比 UUID 快 60%。与 UUID 字母表中的 36 个字符不同,NanoID 只有 21 个字符。)

  • 更方便。(有composer 包管理资源,一键安装直接使用。咳咳~~虽然 这条优点只针对于PHP程序猿开发者)

  • 自定义性更强。(可以更短哦~)

  • 支持更多开发语言。(C#、C++、Go、Java、JavaScript、Perl、PHP、Python、Ruby、Rust、Swift等)

题外话:nanoid是uuid的主要竞争对手。。号称 正在逐渐替代uuid。。


小总结:nanoid是什么?答:nanoid是一个用来生成一个 唯一ID的生成器。

三、Nanoid-php的安装及使用

安装:

# 安装php版本的nanoid
composer require hidehalo/nanoid-php


具体使用如下所示:

include_once 'vendor/autoload.php';

use Hidehalo\Nanoid\Client;

//使用nanoid对象
$client = new Client();

//默认随机生成器
echo '默认随机生成器:'.$client->generateId($size = 21).'<br/>';

//更安全的随机生成器
echo '更安全的随机生成器:'.$client->generateId($size = 21, $mode = Client::MODE_DYNAMIC).'<br/>';

//自定义长度
echo '自定义长度的随机生成器:'.$client->formattedId($alphabet = '01234567890qazwsxuhn', $size = 6).'<br/>';

exit;


测试输出效果图如下:

QQ截图20220520000651.png



声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。

小周博客
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

精彩评论

全部回复 0人评论 7,777人参与

loading