Back-End

30 nov, 2018

Gerando UUIDs em PHP com ramsey/uuid

506 visualizações
Publicidade

Fala pessoal, tudo bom? Estamos aqui para mostrar para vocês mais uma biblioteca muito legal em PHP. Dessa vez iremos criar UUID (identificador único universal).

A biblioteca ramsey/uuid é perfeita para a criação de UUIDs, já que suporta 4 versões de UUID (1, 3, 4 e 5), sua implementação é muito simples, perfeita para você não perder tempo.

Vamos então a geração do UUID:

Primeiramente criamos uma pasta uuid e daremos um composer install.

composer require ramsey/uuid

Feito isso. iremos criar um arquivo uuid.php para verificar as formas de criar os UUIDs:

<?php
require 'vendor/autoload.php';

use Ramsey\Uuid\Uuid; //carregando a classe UUID
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; //carregando as excessões

try {

    //Gerando um objeto UUID de versão 1 (baseada em tempo)
    $uuid1 = Uuid::uuid1();
    echo $uuid1->toString() . "\n"; // i.e. e4eaaaf2-d142-11e1-b3e4-080027620cdd

    //Gerando um objeto UUID de versão 3 (baseada em nome e usando hash MD5)
    $uuid3 = Uuid::uuid3(Uuid::NAMESPACE_DNS, 'imasters.com');
    echo $uuid3->toString() . "\n"; // i.e. 11a38b9a-b3da-360f-9353-a5a725514269

    //Gerando um objeto UUID de versão 4 (aleatório)
    $uuid4 = Uuid::uuid4();
    echo $uuid4->toString() . "\n"; // i.e. 25769c6c-d34d-4bfe-ba98-e0ee856f3e7a

    //Gerando um objeto UUID de versão 3 (baseada em nome e usando hash SHA1)
    $uuid5 = Uuid::uuid5(Uuid::NAMESPACE_DNS, 'imasters.com');
    echo $uuid5->toString() . "\n"; // i.e. c4a760a8-dbcf-5254-a0d9-6a4474bd1b62

} catch (UnsatisfiedDependencyException $e) {

    // Caso ocorra algum erro:
    echo 'Excessão: ' . $e->getMessage() . "\n";

}

E, vamos gerar algumas UUIDs, digitando o seguinte comando no terminal:

php uuid.php

Na geração das UUIDs, percebemos que as versões 3 e 5 geram hashs iguais, faz sentido, já que são baseadas em nome. Na versão 1, modifica-se a cadeia 1 e 4. E na versão 4 o hash realmente é totalmente aleatório.

Espero que esse artigo ajude você a criar UUIDs com facilidade. Um grande abraço e até a próxima.