PHPackages                             codiliateur/smart-uuid - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. codiliateur/smart-uuid

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

codiliateur/smart-uuid
======================

Specific UUID generator

v1.0.6(1mo ago)0126MITPHPPHP ^7.3|^8.0

Since Dec 3Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/codiliateur/smart-uuid)[ Packagist](https://packagist.org/packages/codiliateur/smart-uuid)[ RSS](/packages/codiliateur-smart-uuid/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (3)Dependencies (8)Versions (4)Used By (0)

smart-uuid
==========

[](#smart-uuid)

Package provides any functions to generate and analyze UUID.

There used a specific (non-standard) algorithm to generate UUID that enables to include into UUID next information:

- creating timestamp
- user defined application code
- user defined entity code

Generated UUID has a next structure:

```
SSSSSSSS-UUUU-UAAA-EEEE-RRRRRRRRRRRR

```

- `S` - 8 hex digits is seconds value of UUID generating timestamp
- `U` - 5 hex digits is microseconds value of UUID generating timestamp
- `A` - 3 hex digits is custom application code
- `E` - 4 hex digits is custom entity code
- `R` - 12 hex digits is random value

The application code and the object code are integer values that are packed into the generated UUID. These codes allow you to identify (programmatically or even visually) the entity and application for which the UUID was generated. Also, a UUID generation timestamp is packed into the UUID with an accuracy of microseconds.

Installing
----------

[](#installing)

To install a package run command:

```
composer require codiliateur/smart-uuid

```

Using trait HasUuidPrimaryKey
-----------------------------

[](#using-trait-hasuuidprimarykey)

Use trait `/Codiliateur/SmartUuid/Models/HasUuidPrimaryKey` in your model if you need to use UUID primary key.

Declare public properties `$appCode` and `$entityCode` in your model to tune UUID generating.

This trait overwrites `getIncrementing()` and `getKeyType()` methods. You must not to fill properties `$incrementing` and `$keyType` in the model.

The trait registers model event handler for **creating**-event to generating UUID and filling model key.

Example:

```
use /Codiliateur/SmartUuid/Models/HasUuidPrimaryKey;

class MyModel extends Model
{
	use HasUuidPrimaryKey

	public $appCode = 0x002;

	public $entityCode = 0x000F;

}
```

Helper functions
----------------

[](#helper-functions)

### generate\_uuid()

[](#generate_uuid)

Use generate\_uuid() to generate uuid.

Syntax:

```
generate_uuid( [[int $entityCode] , int $appCode] ) : string

```

Arguments:

- `$entityCode` - integer entity code (default - 0) in range from 0 to 65535
- `$appCode` - integer application code (default - 0) in range from 0 to 4095

Returning: Generated UUID as string.

```
$uuid = generate_uuid(0xF,0x2);
echo $uuid; // 622235ea-8e54-f002-000f-742c8deebf77
```

### extract\_uuid\_part()

[](#extract_uuid_part)

Extracts timestamp, application or entity code from UUID.

Syntax:

```
extract_uuid_part( string $uuid, $part [, string $format] ) : mixed

```

Arguments:

- `$uuid` - analyzed UUID;
- `$part` - extracting part:
    - 'timestamp' - to retrieve creating uuid timestamp
    - 'app\_code' - to retrieve application code
    - 'entity\_code' - to retrieve entity code
- `$format` - returning value format:
    - 1 - (default) \\Carbon\\Carbon object;
    - 2 - \\DateTime object;
    - or format string to return formatted data string. Example: `'Y-m-d H:i:s.u'`

Returning: \\Carbon\\Carbon | \\DateTime | string.

Extracting timestamp examples:

```
$uuid = gen_uuid(0xF,0x2);
echo extract_uuid_part($uuid, 'timestamp', 1);
// Carbon\Carbon @1701626403 {#6267
//    date: 2023-12-03 18:00:03.502460 UTC (+00:00),
// }

echo extract_uuid_part($uuid, 'timestamp', 'Y-m-d H:i:s.u');
// DateTime @1701626403 {#6317
//    date: 2023-12-03 18:00:03.502460 UTC (+00:00),
// }

echo extract_uuid_part($uuid, 'timestamp', 'Y-m-d H:i:s.u');
// 2023-12-04 19:00:39.906514
```

Extracting application code example:

```
$uuid = gen_uuid(0xF,0x2);
echo extract_uuid_part($uuid, 'app_code');
// 2
```

Extracting entity code example:

```
$uuid = gen_uuid(0xF,0x2);
echo extract_uuid_part($uuid, 'entity_code');
// 15
```

#### Constants

[](#constants)

You can use next constants

```
// $part constants
Codiliateur\SmartUuid\Uuid::TIMESTAMP           = 'timestamp'
Codiliateur\SmartUuid\Uuid::APP_CODE            = 'app_code'
Codiliateur\SmartUuid\Uuid::ENTITY_CODE         = 'entity_code'

// $format constants
Codiliateur\SmartUuid\Uuid::TS_FORMAT_CARBON    = 1
Codiliateur\SmartUuid\Uuid::TS_FORMAT_DTETIME   = 2

```

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance90

Actively maintained with recent releases

Popularity11

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~421 days

Total

3

Last Release

53d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/e9f2d90d10001bd0e403d32d36a87500b8d3fdce01c26b7aad5cb4aa930f60fb?d=identicon)[codiliator](/maintainers/codiliator)

---

Top Contributors

[![codiliateur](https://avatars.githubusercontent.com/u/101108311?v=4)](https://github.com/codiliateur "codiliateur (3 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/codiliateur-smart-uuid/health.svg)

```
[![Health](https://phpackages.com/badges/codiliateur-smart-uuid/health.svg)](https://phpackages.com/packages/codiliateur-smart-uuid)
```

###  Alternatives

[wireui/wireui

TallStack components

1.8k1.3M16](/packages/wireui-wireui)[whitecube/laravel-timezones

Store UTC dates in the database and work with custom timezones in the application.

106106.2k](/packages/whitecube-laravel-timezones)[ramonrietdijk/livewire-tables

Dynamic tables for models with Laravel Livewire

21147.4k](/packages/ramonrietdijk-livewire-tables)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
