Skip to content
Property AttributeHydration Stage

MapFrom

MapFrom allows you to map a DTO property from a different input key.

Basic Usage

php
use Alamellama\Carapace\Attributes\MapFrom;
use Alamellama\Carapace\Data;

class User extends Data
{
    public function __construct(
        public string $name,

        #[MapFrom('email_address')]
        public string $email,
    ) {}
}

$user = User::from([
    'name' => 'John Doe',
    'email_address' => 'john.doe@example.com',
]);

echo $user->email; // Outputs: john.doe@example.com

Multiple Sources

You can specify multiple source keys in a single MapFrom attribute:

php
class UserProfile extends Data
{
    public function __construct(
        public string $name,

        #[MapFrom('email_address', 'contact_email')]
        public string $email,
    ) {}
}

You can also use multiple MapFrom attributes on the same property:

php
class UserProfile extends Data
{
    public function __construct(
        #[MapFrom('display_name')]
        #[MapFrom('user_name')]
        public string $username,
    ) {}
}