Input/Output Mapping

Basic Usage

use Astral\Serialize\Attributes\InputName;
use Astral\Serialize\Attributes\OutputName;
use Astral\Serialize\Serialize;

class User extends Serialize {
    // Use a different property name for input
    #[InputName('user_name')]
    public string $name;

    // Use a different property name for output
    #[OutputName('user_id')]
    public int $id;

    // Support different names for both input and output
    #[InputName('register_time')]
    #[OutputName('registeredAt')]
    public DateTime $createdAt;
}

// Input data with different names
$user = User::from([
    'user_name' => 'Job',       // Mapped to $name
    'id' => 123,                // Remains unchanged
    'register_time' => '2023-01-01 10:00:00'  // Mapped to $createdAt
]);

// Output data
$userArray = $user->toArray();
// $userArray toArray:
// [
//     'name' => 'Job',
//     'user_id' => 123,
//     'registeredAt' => '2023-01-01 10:00:00'
// ]

Handling Multiple Input/Output Names

Complex Mapping Scenarios

最后更新于