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.comMultiple 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,
) {}
}