Save 37% off PRO during our Black Friday Sale! »

Identify All the Things With UUIDs! (Nomad PHP May 2016)

Identify All the Things With UUIDs! (Nomad PHP May 2016)

Universally unique identifiers (UUIDs) are a fun and exciting way to identify things. We can issue UUIDs forever and never run out; they’re practically unique! Join this whirlwind adventure in search of the perfect identifier to find out why UUIDs might be good for your projects.

0c217b9a7dd0aa31ed40bd0f453727e1?s=128

Ben Ramsey
PRO

May 19, 2016
Tweet

Transcript

  1. Identify All the Things With UUIDs Ben Ramsey Nomad PHP

    19 May 2016
  2. HI, I’M BEN. I’m a web craftsman, author, and speaker.

    I build a platform for professional photographers at ShootProof. I enjoy APIs, open source software, organizing user groups, good beer, and spending time with my family. Nashville, TN is my home. ▸Zend PHP Certification Study Guide ▸Nashville PHP & Atlanta PHP user groups ▸array_column() ▸ramsey/uuid ▸league/oauth2-client
  3. What is a UUID?

  4. universally unique identifier

  5. universally unique identifier U U ID

  6. universally unique identifier

  7. universally unique identifier

  8. universally unique There are 1632 possible UUIDs “only after generating

    1 billion UUIDs every second for the next 100 years, the probability of creating just one duplicate would be about 50%” — Wikipedia, UUID
  9. 128-bit integer 379dae82-5a2b-4c4b-8193-b8e7749a3495

  10. RFC 4122 Defines a specific variant of UUID with five

    versions.
  11. composer require ramsey/uuid

  12. use Ramsey\Uuid\Uuid;

  13. Version 1: Time Based

  14. $uuid = Uuid::uuid1(); echo $uuid->toString();

  15. for ($i = 0; $i < 5; $i++) { echo

    Uuid::uuid1()->toString(); echo "\n"; }
  16. 68845efc-1303-11e6-8d40-3c15c2cafa76 68846d0c-1303-11e6-8088-3c15c2cafa76 68847216-1303-11e6-830b-3c15c2cafa76 68847590-1303-11e6-892a-3c15c2cafa76 68847806-1303-11e6-913b-3c15c2cafa76

  17. Version 2: DCE Security

  18. Version 3: Name Based MD5

  19. $nomadphpNS = Uuid::uuid3( Uuid::NAMESPACE_DNS, 'nomadphp.com' ); $pageId = Uuid::uuid3( $nomadphpNS,

    '/2016/02/22/the-rise-of-the-machines/' );
  20. 6d5bfa6d-08d5-3b30-bffb-390f96d6a363

  21. Version 4: Random

  22. for ($i = 0; $i < 5; $i++) { echo

    Uuid::uuid4()->toString(); echo "\n"; }
  23. 28b7883f-3df0-4e8a-9994-57b28f01fab2 dd78278c-03d7-4ca4-8411-06380c4cfd57 ae8de9f1-6ffc-454e-8522-b2c260e4c66b a5e9ac6b-0680-4fb7-a019-f305c7d2d5da 09fd4b15-2b2d-49be-af51-30899169ff99

  24. Version 5: Name Based SHA-1

  25. $nomadphpNS = Uuid::uuid5( Uuid::NAMESPACE_DNS, 'nomadphp.com' ); $pageId = Uuid::uuid5( $nomadphpNS,

    '/2016/02/22/the-rise-of-the-machines/' );
  26. c21433be-0665-5179-b567-a020f2ea7063

  27. Advanced
 Features

  28. $factory = new UuidFactory(); $generator = new CombGenerator( $factory->getRandomGenerator(), $factory->getNumberConverter()

    ); $codec = new TimestampFirstCombCodec( $factory->getUuidBuilder() ); $factory->setRandomGenerator($generator); $factory->setCodec($codec); Uuid::setFactory($factory); for ($i = 0; $i < 5; $i++) { echo Uuid::uuid4()->toString(); echo "\n"; }
  29. 85031b4a-26c8-4689-a4e9-8d24fcb961b9 85031b4a-26e6-42e3-82ac-efc012d82dce 85031b4a-26fb-4c3d-ba85-0c5bc8365bdd 85031b4a-270c-4a01-97f6-eeeb1bbbf70e 85031b4a-271d-4d4b-bc49-a364fc1fc9f4

  30. THANK YOU. ANY QUESTIONS? If you want to talk more,

    feel free to contact me. benramsey.com @ramsey github.com/ramsey ben@benramsey.com Identify All the Things With UUIDs Copyright © 2016 Ben Ramsey This work is licensed under Creative Commons Attribution- ShareAlike 4.0 International. For uses not covered under this license, please contact the author. Ramsey, Ben. “Identify All the Things With UUIDs.” Nomad PHP. Web conference. 19 May 2016. Conference presentation. This presentation was created using Keynote. The text is set in Chunk Five and Helvetica Neue. The source code is set in Menlo. The iconography is provided by Font Awesome. Unless otherwise noted, all photographs are used by permission under a Creative Commons license. Please refer to the Photo Credits slide for more information. bram.se/ramsey-uuid
  31. PHOTO CREDITS 1. “38-365 Fingerprint” by Bram Cymet 2. “Baby

    Feet” by Katelyn Kenderdine 3. “Security door” by reynermedia 4. “Hello My Name Is.... 221/365” by Robert Occhialini 5. “Random” by Vladimer Shioshvili 6. “Hello! My Name Is JEDi.” by Tyrone J Moore 7. “Curvy Road Ahead” by Kit Ng 1 2 3 4 5 6 7