PHP code example of michalsn / codeigniter4-uuid

1. Go to this page and download the library: Download michalsn/codeigniter4-uuid library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

michalsn / codeigniter4-uuid example snippets




namespace Config;

use Michalsn\CodeIgniterUuid\Config\Uuid as BaseUuid;
use Michalsn\CodeIgniterUuid\Enums\UuidType;
use Michalsn\CodeIgniterUuid\Enums\UuidVersion;
use Symfony\Component\Uid\Uuid as SymfonyUuid;

class Uuid extends BaseUuid
{
    // Default UUID version for generation
    public UuidVersion $defaultVersion = UuidVersion::V7;

    // Default storage type: STRING (36 chars) or BYTES (16 bytes binary)
    public UuidType $defaultType = UuidType::STRING;

    // ...
}



namespace App\Models;

use CodeIgniter\Model;
use Michalsn\CodeIgniterUuid\Traits\HasUuid;

class ProjectModel extends Model
{
    use HasUuid;

    protected $table            = 'projects';
    protected $primaryKey       = 'id';
    protected $useAutoIncrement = false; // Required for UUID primary keys
    protected $returnType       = 'array';
    protected $allowedFields    = ['name', 'description'];

    // Define UUID fields using casts
    protected array $casts = [
        'id' => 'uuid',
    ];
}

protected array $casts = [
    // Use defaults from config
    'id' => 'uuid',

    // Specify version only
    'id' => 'uuid[v4]',

    // Specify version and storage type
    'id' => 'uuid[v7,bytes]',

    // Use default version with specific storage type
    'id' => 'uuid[,bytes]',
];

class OrderModel extends Model
{
    use HasUuid;

    protected $table            = 'orders';
    protected $primaryKey       = 'id';
    protected $useAutoIncrement = true; // Regular auto-increment primary key
    protected $allowedFields    = ['tracking_id', 'customer_id', 'total'];

    protected array $casts = [
        'tracking_id' => 'uuid[v4]',
    ];
}

$order = [
    'tracking_id' => service('uuid')->uuid4()->toRfc4122(),
    'customer_id' => 123,
    'total'       => 99.99,
];

$model->insert($order);

protected array $casts = [
    'id' => 'uuid[v7,bytes]',
];

// Convenience methods (recommended)
$uuid = service('uuid')->uuid4();
$uuid = service('uuid')->uuid7();
$ulid = service('uuid')->ulid();

// Or use generate() with string parameter
$uuid = service('uuid')->generate('v4');
$uuid = service('uuid')->generate('v7');

// Or use generate() with enum for type safety
use Michalsn\CodeIgniterUuid\Enums\UuidVersion;

$uuid = service('uuid')->generate(UuidVersion::V4);
$uuid = service('uuid')->generate(UuidVersion::ULID);

// Generate using default version from config
$uuid = service('uuid')->generate();

$uuid = service('uuid')->generate('v7');

// Convert to different formats
$uuid->toRfc4122();  // "550e8400-e29b-41d4-a716-446655440000"
$uuid->toBinary();   // 16-byte binary string
$uuid->toBase32();   // Crockford Base32 encoding
$uuid->toBase58();   // Base58 encoding

// From string (with or without hyphens)
$uuid = service('uuid')->fromString('550e8400-e29b-41d4-a716-446655440000');
$uuid = service('uuid')->fromString('550e8400e29b41d4a716446655440000');

// From ULID string
$ulid = service('uuid')->fromString('01ARZ3NDEKTSV4RRFFQ69G5FAV');

// From UUID Base32 encoding
$uuid = service('uuid')->fromBase32('01JPRHWQCKFB7V1KMWP7PRRSMG');

// From unknown format (string or binary)
$uuid = service('uuid')->fromValue($unknownValue);

// Check if a string is a valid UUID or ULID
service('uuid')->isValid('550e8400-e29b-41d4-a716-446655440000'); // true
service('uuid')->isValid('01ARZ3NDEKTSV4RRFFQ69G5FAV');           // true (ULID)
service('uuid')->isValid('not-a-uuid');                           // false

use Michalsn\Uuid\UuidModel;

class ProjectModel extends UuidModel
{
    protected $uuidVersion = 'uuid7';
    protected $uuidFields  = ['id', 'tracking_id'];
}

use CodeIgniter\Model;
use Michalsn\CodeIgniterUuid\Traits\HasUuid;

class ProjectModel extends Model
{
    use HasUuid;

    protected $useAutoIncrement = false;

    protected array $casts = [
        'id'          => 'uuid[v7]',
        'tracking_id' => 'uuid[v4]',
    ];
}

use Michalsn\Uuid\UuidEntity;

class ProjectEntity extends UuidEntity
{
    protected $uuids = ['id', 'category_id'];
}

use CodeIgniter\Entity\Entity;

class ProjectEntity extends Entity
{
    // No special UUID configuration needed
}

// In model file
public $uuidVersion = 'uuid7';

// In config file
use Michalsn\CodeIgniterUuid\Enums\UuidVersion;

public UuidVersion $defaultVersion = UuidVersion::V7;

// These work (backward compatible)
$uuid->toString();   // alias for toRfc4122()
$uuid->getBytes();   // alias for toBinary()
$uuid->getHex();     // alias for toHex()

// New Symfony UID methods (preferred)
$uuid->toRfc4122();
$uuid->toBinary();
$uuid->toHex();
$uuid->toBase32();
$uuid->toBase58();

$uuid        = service('uuid')->uuid7();
$symfonyUuid = $uuid->unwrap(); // Returns Symfony\Component\Uid\UuidV7
console
php spark uuid:publish