commercetools-sdk-php-v2  master
The platform, import-api and ml-api PHP sdks generated from our api reference.
TimeAttributeModel.php
1 <?php
2 
3 declare(strict_types=1);
10 
15 use DateTimeImmutable;
16 use stdClass;
17 
21 final class TimeAttributeModel extends JsonObjectModel implements TimeAttribute
22 {
23  public const DISCRIMINATOR_VALUE = 'time';
28  protected $name;
29 
34  protected $type;
35 
40  protected $value;
41 
42 
46  public function __construct(
47  ?string $name = null,
48  ?DateTimeImmutable $value = null,
49  ?string $type = null
50  ) {
51  $this->name = $name;
52  $this->value = $value;
53  $this->type = $type ?? self::DISCRIMINATOR_VALUE;
54  }
55 
64  public function getName()
65  {
66  if (is_null($this->name)) {
68  $data = $this->raw(self::FIELD_NAME);
69  if (is_null($data)) {
70  return null;
71  }
72  $this->name = (string) $data;
73  }
74 
75  return $this->name;
76  }
77 
82  public function getType()
83  {
84  if (is_null($this->type)) {
86  $data = $this->raw(self::FIELD_TYPE);
87  if (is_null($data)) {
88  return null;
89  }
90  $this->type = (string) $data;
91  }
92 
93  return $this->type;
94  }
95 
100  public function getValue()
101  {
102  if (is_null($this->value)) {
104  $data = $this->raw(self::FIELD_VALUE);
105  if (is_null($data)) {
106  return null;
107  }
108  $data = DateTimeImmutable::createFromFormat(MapperFactory::TIME_FORMAT, $data);
109  if (false === $data) {
110  return null;
111  }
112  $this->value = $data;
113  }
114 
115  return $this->value;
116  }
117 
118 
122  public function setName(?string $name): void
123  {
124  $this->name = $name;
125  }
126 
130  public function setValue(?DateTimeImmutable $value): void
131  {
132  $this->value = $value;
133  }
134 
135 
136  #[\ReturnTypeWillChange]
137  public function jsonSerialize()
138  {
139  $data = $this->toArray();
140  if (isset($data[TimeAttribute::FIELD_VALUE]) && $data[TimeAttribute::FIELD_VALUE] instanceof \DateTimeImmutable) {
141  $data[TimeAttribute::FIELD_VALUE] = $data[TimeAttribute::FIELD_VALUE]->format('H:i:s.u');
142  }
143  return (object) $data;
144  }
145 }
__construct(?string $name=null, ?DateTimeImmutable $value=null, ?string $type=null)