Giter VIP home page Giter VIP logo

uuid's Introduction

ramsey/uuid

Source Code Latest Version Software License Build Status Coverage Status Total Downloads Donate

ramsey/uuid is a PHP 7.2+ library for generating and working with RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).

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

About

From Wikipedia:

The intent of UUIDs is to enable distributed systems to uniquely identify information without significant central coordination. In this context the word unique should be taken to mean "practically unique" rather than "guaranteed unique". Since the identifiers have a finite size, it is possible for two differing items to share the same identifier. The identifier size and generation process need to be selected so as to make this sufficiently improbable in practice. Anyone can create a UUID and use it to identify something with reasonable confidence that the same identifier will never be unintentionally created by anyone to identify something else. Information labeled with UUIDs can therefore be later combined into a single database without needing to resolve identifier (ID) conflicts.

Much inspiration for this library came from the Java and Python UUID libraries.

Installation

The preferred method of installation is via Packagist and Composer. Run the following command to install the package and add it as a requirement to your project's composer.json:

composer require ramsey/uuid

Upgrading from 3.x to 4.x

TODO

Upgrading from 2.x to 3.x

While we have made significant internal changes to the library, we have made every effort to ensure a seamless upgrade path from the 2.x series of this library to 3.x.

One major breaking change is the transition from the Rhumsaa root namespace to Ramsey. In most cases, all you will need is to change the namespace to Ramsey in your code, and everything will "just work."

Here are full details on the breaking changes to the public API of this library:

  1. All namespace references of Rhumsaa have changed to Ramsey. Simply change the namespace to Ramsey in your code and everything should work.
  2. The console application has moved to ramsey/uuid-console. If using the console functionality, use Composer to require ramsey/uuid-console.
  3. The Doctrine field type mapping has moved to ramsey/uuid-doctrine. If using the Doctrine functionality, use Composer to require ramsey/uuid-doctrine.

What to do if you see a "rhumsaa/uuid is abandoned" message

When installing your project's dependencies using Composer, you might see the following message:

Package rhumsaa/uuid is abandoned, you should avoid using it. Use ramsey/uuid instead.

Don't panic. Simply execute the following commands with Composer:

composer remove rhumsaa/uuid
composer require ramsey/uuid=^2.9

After doing so, you will have the latest ramsey/uuid package in the 2.x series, and there will be no need to modify any code; the namespace in the 2.x series is still Rhumsaa.

Requirements

Some methods in this library have requirements due to integer size restrictions on 32-bit and 64-bit builds of PHP. A 64-bit build of PHP and either the GMP PHP-extension or the Moontoast\Math library are recommended. However, this library is designed to work on 32-bit builds of PHP without GMP or Moontoast\Math, with some degraded functionality. Please check the API documentation for more information.

If a particular requirement is not present, then an UnsatisfiedDependencyException is thrown, allowing one to catch a bad call in an environment where the call is not supported and gracefully degrade.

API documentation

The latest class API documentation is available online.

Examples

See the cookbook on the wiki for more examples and approaches to specific use-cases.

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

use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;

try {

    // Generate a version 1 (time-based) UUID object
    $uuid1 = Uuid::uuid1();
    echo $uuid1->toString() . "\n"; // i.e. e4eaaaf2-d142-11e1-b3e4-080027620cdd

    // Generate a version 3 (name-based and hashed with MD5) UUID object
    $uuid3 = Uuid::uuid3(Uuid::NAMESPACE_DNS, 'php.net');
    echo $uuid3->toString() . "\n"; // i.e. 11a38b9a-b3da-360f-9353-a5a725514269

    // Generate a version 4 (random) UUID object
    $uuid4 = Uuid::uuid4();
    echo $uuid4->toString() . "\n"; // i.e. 25769c6c-d34d-4bfe-ba98-e0ee856f3e7a

    // Generate a version 5 (name-based and hashed with SHA1) UUID object
    $uuid5 = Uuid::uuid5(Uuid::NAMESPACE_DNS, 'php.net');
    echo $uuid5->toString() . "\n"; // i.e. c4a760a8-dbcf-5254-a0d9-6a4474bd1b62

} catch (UnsatisfiedDependencyException $e) {

    // Some dependency was not met. Either the method cannot be called on a
    // 32-bit system, or it can, but it relies on Moontoast\Math to be present.
    echo 'Caught exception: ' . $e->getMessage() . "\n";

}

Contributing

Contributions are welcome! Please read CONTRIBUTING for details.

Copyright and license

The ramsey/uuid library is copyright © Ben Ramsey and licensed for use under the MIT License (MIT). Please see LICENSE for more information.

uuid's People

Contributors

ramsey avatar jmauerhan avatar signpostmarv avatar mhujer avatar marijn avatar localheinz avatar potherca avatar mloureiro avatar mjrider avatar vinkla avatar davispeixoto avatar ghola avatar backendtea avatar yberkholz avatar 1ma avatar jwpage avatar zerrvox avatar gdbrown avatar frederikbosch avatar barryvdh avatar antoha-gs avatar lt avatar marcosh avatar garak avatar ondrejmirtes avatar pborreli avatar scrutinizer-auto-fixer avatar simonwelsh avatar teohhanhui avatar gitter-badger avatar

Watchers

James Cloos avatar Elektropay avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.