commercetools-sdk-php-v2
The commercetools platform, import-api and PHP sdks generated from our api reference.
DateTimeFieldModel.php
1 <?php
2 
3 declare(strict_types=1);
10 
15 use DateTimeImmutable;
16 use stdClass;
17 
21 final class DateTimeFieldModel extends JsonObjectModel implements DateTimeField
22 {
23  public const DISCRIMINATOR_VALUE = 'DateTime';
28  protected $type;
29 
34  protected $value;
35 
36 
40  public function __construct(
41  ?DateTimeImmutable $value = null,
42  ?string $type = null
43  ) {
44  $this->value = $value;
45  $this->type = $type ?? self::DISCRIMINATOR_VALUE;
46  }
47 
54  public function getType()
55  {
56  if (is_null($this->type)) {
58  $data = $this->raw(self::FIELD_TYPE);
59  if (is_null($data)) {
60  return null;
61  }
62  $this->type = (string) $data;
63  }
64 
65  return $this->type;
66  }
67 
72  public function getValue()
73  {
74  if (is_null($this->value)) {
76  $data = $this->raw(self::FIELD_VALUE);
77  if (is_null($data)) {
78  return null;
79  }
80  $data = DateTimeImmutable::createFromFormat(MapperFactory::DATETIME_FORMAT, $data);
81  if (false === $data) {
82  return null;
83  }
84  $this->value = $data;
85  }
86 
87  return $this->value;
88  }
89 
90 
94  public function setValue(?DateTimeImmutable $value): void
95  {
96  $this->value = $value;
97  }
98 
99 
100  #[\ReturnTypeWillChange]
101  public function jsonSerialize()
102  {
103  $data = $this->toArray();
104  if (isset($data[DateTimeField::FIELD_VALUE]) && $data[DateTimeField::FIELD_VALUE] instanceof \DateTimeImmutable) {
105  $data[DateTimeField::FIELD_VALUE] = $data[DateTimeField::FIELD_VALUE]->setTimeZone(new \DateTimeZone('UTC'))->format('c');
106  }
107  return (object) $data;
108  }
109 }
__construct(?DateTimeImmutable $value=null, ?string $type=null)