ramsey/uuid
Generate and work with UUIDs in PHP using ramsey/uuid. Create v1, v4, and other UUID types, parse and validate UUID strings, and integrate easily via Composer. Well-documented, widely used, and standards-aware for reliable identifiers.
UUID/BINARY(16) columns) or MongoDB (as _id). Aligns with Laravel’s Eloquent uuid() castable trait.Stringable and JsonSerializable, ensuring native PHP 8.1+ interoperability with Laravel’s API responses.hasCast or custom accessors).Str::uuid() for comparison.Uuid::fromString()).CombGenerator), but v4.x is stable. Mitigation: Pin to ^4.9 in composer.json.str_getcsv()).brick/math (for v7/v8) is battle-tested; no critical vulnerabilities.Uuid::NIL, Uuid::MAX).unserialize errors).UUID, MySQL BINARY(16)) or strings?UnixTimeGenerator)?Uuid::isValid() in DTOs)?Str::uuid() with Uuid::uuid4()/uuid7() for consistency.hasCast(['id' => UuidCast::class]) or custom accessors:
protected $casts = ['id' => 'uuid'];
Stringable for native JSON serialization:
return new Resource($model->id); // Auto-converts to string
uuid() or binary(16) columns with Uuid::fromBytes().TEXT (36 chars) or BLOB (16 bytes).Uuid::getBytes() for binary Redis keys or toString() for strings.Str::uuid() with Uuid::uuid4()/uuid7() in services/models.// Before
$id = Str::uuid();
// After
$id = Uuid::uuid7(); // Time-ordered
id as UUID, legacy_id as integer).Uuid::fromString()).Uuid::isValid() to DTOs/API requests.public function rules(): array {
return ['uuid' => ['required', 'uuid']]; // Uses Laravel’s validator
}
@deprecated in OpenAPI).Uuid::getBytes() for Elasticsearch/MongoDB _id.user_id fields.personal_access_tokens.Uuid::getBytes()) for space efficiency.String type for UUIDs (no additional config needed).| Step | Priority | Effort | Risk |
|---|---|---|---|
Replace Str::uuid() |
High | Low | None |
| Update Eloquent models | Medium | Medium | Low |
| Database schema changes | High | High | Medium |
| API input validation | Medium | Low | Low |
| Deprecate integer IDs | Low | Medium | Medium |
brick/math). No runtime dependencies beyond PHP.^4.9 for stability.Uuid::isValid() failures) for debugging.Uuid::getVersion()/getVariant() to inspect UUIDs in logs.Uuid::fromString($uuid)->getBytes().Uuid::fromBytes() after unserialize.Uuid::uuid7() in high-load endpoints.BINARY(16) (PostgreSQL) or UUID type for optimal performance.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| UUIDv7 collision (same ms) | Duplicate IDs | Use Uuid::uuid7() with fallback to v4. |
| Invalid UUID input | API/data corruption | Validate with Uuid::isValid(). |
| Database UUID index corruption | Query failures | Use BINARY(16) storage. |
| PHP 8.2+ deprecations | Runtime warnings | Pin to ^4.9 (PHP 8.0–8.5). |
| Dependency vulnerabilities | Security risk | Monitor brick/math updates. |
Uuid::uuid7() vs. uuid4() tradeoffs.BINARY(16) vs. TEXT storage.Str::uuid() with Uuid::uuid7().How can I help you explore Laravel packages today?