Skip to content

Casting Attributes

Reference for type casting attributes and 20+ built-in cast classes.

Cast property to a specific type:

use Event4u\DataHelpers\SimpleDTO\Attributes\Cast;
use Event4u\DataHelpers\SimpleDTO\Casts\DateTimeCast;
#[Cast(DateTimeCast::class)]
public readonly Carbon $createdAt;
#[Cast(StringCast::class)] // Cast to string
#[Cast(IntCast::class)] // Cast to integer
#[Cast(FloatCast::class)] // Cast to float
#[Cast(BoolCast::class)] // Cast to boolean
#[Cast(ArrayCast::class)] // Cast to array
#[Cast(DateTimeCast::class)] // Cast to Carbon
#[Cast(DateCast::class)] // Cast to Carbon (date only)
#[Cast(TimestampCast::class)] // Cast from timestamp
#[Cast(EnumCast::class)] // Cast to enum
#[Cast(BackedEnumCast::class)] // Cast to backed enum
#[Cast(CollectionCast::class)] // Cast to Collection
#[Cast(DataCollectionCast::class)] // Cast to DataCollection
#[Cast(ObjectCast::class)] // Cast to object
#[Cast(JsonCast::class)] // Cast JSON to array
#[Cast(EncryptedCast::class)] // Encrypt/decrypt
#[Cast(HashCast::class)] // One-way hash
#[Cast(DecimalCast::class)] // Cast to decimal
#[Cast(UuidCast::class)] // Cast to UUID
#[Cast(IpAddressCast::class)] // Cast to IP address
#[Cast(UrlCast::class)] // Cast to URL
// Date format
#[Cast(DateTimeCast::class, format: 'Y-m-d H:i:s')]
public readonly Carbon $createdAt;
// Nullable cast
#[Cast(IntCast::class, nullable: true)]
public readonly ?int $age;
// Default value
#[Cast(StringCast::class, default: 'N/A')]
public readonly string $name;
use Event4u\DataHelpers\SimpleDTO\Contracts\Cast;
class UpperCaseCast implements Cast
{
public function cast(mixed $value): string
{
return strtoupper((string) $value);
}
}
#[Cast(UpperCaseCast::class)]
public readonly string $name;
class UserDTO extends SimpleDTO
{
public function __construct(
#[Cast(StringCast::class)]
public readonly string $name,
#[Cast(DateTimeCast::class)]
public readonly Carbon $birthDate,
#[Cast(EnumCast::class)]
public readonly Status $status,
#[Cast(EncryptedCast::class)]
public readonly string $ssn,
) {}
}