commercetools-sdk-php-v2
The commercetools platform, import-api and PHP sdks generated from our api reference.
Loading...
Searching...
No Matches
DateFieldModel.php
1<?php
2
3declare(strict_types=1);
10
15use DateTimeImmutable;
16use stdClass;
17
21final class DateFieldModel extends JsonObjectModel implements DateField
22{
23 public const DISCRIMINATOR_VALUE = 'Date';
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::DATE_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[DateField::FIELD_VALUE]) && $data[DateField::FIELD_VALUE] instanceof \DateTimeImmutable) {
105 $data[DateField::FIELD_VALUE] = $data[DateField::FIELD_VALUE]->format('Y-m-d');
106 }
107 return (object) $data;
108 }
109}
__construct(?DateTimeImmutable $value=null, ?string $type=null)