PHP Unique Number Repository: Maintain repositories of unique numbers via an API

Recommend this page to a friend!
  Info   Example   View files (31)   Download .zip   Reputation   Support forum   Blog    
Ratings Unique User Downloads Download Rankings
Not yet rated by the usersTotal: 51 All time: 9,828 This week: 431
Version License PHP version Categories
unique_number_reposi 1.0.0GNU Lesser Genera...5PHP 5, Web services, Math
Description Author

This package can maintain repositories of unique numbers via an API.

It provides a REST API that can be accessed to perform several types of operations to maintain one or more repositories that store unique numbers. Currently it can:

- Create, list and delete distinct repositories of unique numbers
- Stores a unique number in a given repository
- Get a list of all unique numbers in a repository
- Store a unique number in a given repository

The package also provides client code to access the repositories REST API.

Innovation Award
PHP Programming Innovation award nominee
July 2019
Number 10
Many applications need to use numbers to identify records of information that is stored in their databases. Those identifiers cannot have repeated values. Therefore the numbers must be unique.

It is also useful that the unique numbers are also random, so they cannot be easily predicted in a way that people with bad intentions can exploit the fact that they can anticipate future unique numbers generated by an application.

To make sure that a unique number is also randomly generated, it is necessary to verify if the number was already generated by the application, it is necessary to keep track of all numbers generated in the past.

This package provides an API for a service of repositories that keeps track of all unique numbers generated so far, thus making it easier to check available unique numbers from different parts of an application.

Manuel Lemos
Picture of nvb
  Performance   Level  
Name: nvb <contact>
Classes: 10 packages by
Country: Germany Germany
Age: ???
All time rank: 1809112 in Germany Germany
Week rank: 762 36 in Germany Germany
Innovation award
Innovation award
Nominee: 6x


Unique Number Repository Webservice

Sometimes, you simple need to make sure you can fetch a unique number for a given problem scope. To easy things up, this project will create a rest based webservice as backend and a command line frontend to support you solving this problem.

REST Based Backend (Server)

  • endpoint s * "/unique-number-repository" * DELETE: deleted a repository and all its unique numbers * GET: returns list of all repository names * PUT: creates a new repository * "/unique-number-repository/{name}" * DELETE: deletes a number from this repository * GET: returns list of all numbers from this repository * PUT: creates a new number for this repository

Command Line Based Frontend (Client)


By Hand

mkdir -p vendor/net_bazzline/unique_number_repository
cd vendor/net_bazzline/unique_number_repository
git clone .

With Packagist

composer require net_bazzline/unique_number_repository:dev-master


By Hand

cd <project root>/configuration
cp client.local.php.dist client.local.php
#adapt client.local.php
cp server.local.php.dist server.local.php
#adapt server.local.php

With setup

cd <project root>


  • implement token authentication (you can and should override the existing token by creating your own client.local.php and server.local.php in configuration)


API is available at



  • upcomming * @todo * multiple storage (databases) are supported (right now, file storage is supported) * return the right status code (403 instead of 404) if a user tries to delete a number he does not own
  • 0.13.0 - released at 06.03.2016 * moved to psr-4 autoloading
  • 0.12.3 - released at 18.12.2015 * updated dependency
  • 0.12.2 - released at 19.11.2015 * updated dependency
  • 0.12.1 - released at 18.11.2015 * updated dependency
  • 0.12.0 - released at 30.09.2015 * changed "not authorized" http status code from wrong 403 to right 401 * introduced right usage of 403
  • 0.11.0 - released at 20.09.2015 * added restriction that only the creator (repository or number) can delete the resource
  • 0.10.4 - released at 16.09.2015 * fixed issue in authorization request * made https an optional requirement * updated * updated dependency
  • 0.10.3 - released at 14.09.2015 addedAPI* section * updated dependencies
  • 0.10.2 - released at 13.09.2015 addedsetup* script to easy up after installation configuration
  • 0.10.1 - released at 13.09.2015 * fixed authentication problem
  • 0.10.0 - released at 13.09.2015 * downgraded to silex 1.2 to support php 5.3.3 * fixed broken links * increased compatibility by using '/usr/bin/env' for client code * removed unused dependencie
  • 0.9.0 - released at 12.09.2015 * silix based server/backend

Final Words

Star it if you like it :-). Add issues if you need it. Pull patches if you enjoy it. Write a blog entry if you use it. Donate something if you love it :-].

File Role Description
bootstrap (2 files)
client (7 files)
configuration (4 files)
example (1 file)
public (2 files)
source (3 directories)
composer.json Data Auxiliary data
LICENSE Lic. License text Doc. Documentation

  Files  /  bootstrap  
File Role Description
   client.php Example Example script
   server.php Example Example script

  Files  /  client  
File Role Description
   check-version Example Example script
   create-repository Example Example script
   create-unique_number Example Example script
   delete-repository Example Example script
   delete-unique_number Example Example script
   list-repositories Example Example script
   list-unique_number Example Example script

  Files  /  configuration  
File Role Description
   client.local.php.dist Data Auxiliary data
   locator.php Aux. Auxiliary script
   server.local.php.dist Data Auxiliary data
   setup Example Example script

  Files  /  example  
File Role Description
   basic_example Data Auxiliary data

  Files  /  public  
File Role Description
   .htaccess Data Auxiliary data
   index.php Aux. Auxiliary script

  Files  /  source  
File Role Description
Application (1 directory)
Domain (1 directory)
Infrastructure (1 directory)

  Files  /  source  /  Application  
File Role Description
Service (4 files)

  Files  /  source  /  Application  /  Service  
File Role Description
   ApplicationLocator.php Class Class source
   InvalidArgumentException.php Class Class source
   NumberEnumerator.php Class Class source
   UniqueNumberEnumeratorFactory.php Class Class source

  Files  /  source  /  Domain  
File Role Description
Model (2 files)

  Files  /  source  /  Domain  /  Model  
File Role Description
   RepositoryRequest.php Class Class source
   UniqueNumberRequest.php Class Class source

  Files  /  source  /  Infrastructure  
File Role Description
Storage (6 files)

  Files  /  source  /  Infrastructure  /  Storage  
File Role Description
   AbstractStorage.php Class Class source
   AbstractStorageFactory.php Class Class source
   RepositoryStorage.php Class Class source
   RepositoryStorageFactory.php Class Class source
   UniqueNumberStorage.php Class Class source
   UniqueNumberStorageFactory.php Class Class source

 Version Control Unique User Downloads Download Rankings  
This week:0
All time:9,828
This week:431

For more information send a message to info at phpclasses dot org.