webpatser/uuid
Pure PHP UUID generator/validator for RFC 4122 & RFC 9562. Create UUID v1, v3, v4, v5, v6, v7 and v8, plus nil UUIDs. Import, validate, compare, and access string/hex/bytes/URN, version, variant, and time fields.
Install the package via Composer:
composer require webpatser/uuid
First use case: Generate a UUIDv7 for a new database record (recommended for Laravel models):
use Webpatser\Uuid\Uuid;
$uuid = Uuid::v7(); // Time-ordered, database-friendly
$model = new User(['id' => $uuid]);
Where to look first:
use Illuminate\Database\Eloquent\Model;
use Webpatser\Uuid\Uuid;
class User extends Model
{
protected $keyType = 'string';
public $incrementing = false;
protected static function boot()
{
parent::boot();
static::creating(function ($model) {
$model->{$model->getKeyName()} = Uuid::v7();
});
}
}
// Generate UUIDv7 for time-ordered records
$uuid = Uuid::v7();
// Access properties
$timestamp = $uuid->time; // Unix timestamp
$string = $uuid->string; // Standard UUID string
use Illuminate\Foundation\Http\FormRequest;
use Webpatser\Uuid\Uuid;
class StoreUserRequest extends FormRequest
{
public function rules()
{
return [
'uuid' => 'required|uuid',
];
}
public function validateUuidAttribute($attribute, $value)
{
return Uuid::validate($value) || $this->fail("Invalid UUID format");
}
}
// Import from SQL Server
$uuid = Uuid::importFromSqlServer('825B076B-44EC-E511-80DC-00155D0ABC54');
// Export to SQL Server format
$sqlGuid = $uuid->toSqlServer();
// Generate secure random UUID for API tokens
$token = Uuid::v4();
// Validate in middleware
if (!Uuid::validate($request->bearerToken)) {
abort(401);
}
importFromSqlServer() when working with SQL Server GUIDsUuid::validate() is case-sensitive for hex characters (use strtolower() if needed)Uuid::benchmark() to compare performance between versionsuuid->version property to verify correct UUID version was generatedUuid::import() to convert strings before comparisonUuid class to support additional versionsUuid::nil() for testing placeholder recordsUuid::generate() with static methodsHow can I help you explore Laravel packages today?