commercetools-sdk-php-v2  master
The platform, import-api and ml-api PHP sdks generated from our api reference.
FieldTypeModel.php
1 <?php
2 
3 declare(strict_types=1);
10 
15 use stdClass;
16 
20 final class FieldTypeModel extends JsonObjectModel implements FieldType
21 {
22  public const DISCRIMINATOR_VALUE = '';
27  protected $name;
28 
33  private static $discriminatorClasses = [
34  'Boolean' => CustomFieldBooleanTypeModel::class,
35  'Date' => CustomFieldDateTypeModel::class,
36  'DateTime' => CustomFieldDateTimeTypeModel::class,
37  'Enum' => CustomFieldEnumTypeModel::class,
38  'LocalizedEnum' => CustomFieldLocalizedEnumTypeModel::class,
39  'LocalizedString' => CustomFieldLocalizedStringTypeModel::class,
40  'Money' => CustomFieldMoneyTypeModel::class,
41  'Number' => CustomFieldNumberTypeModel::class,
42  'Reference' => CustomFieldReferenceTypeModel::class,
43  'Set' => CustomFieldSetTypeModel::class,
44  'String' => CustomFieldStringTypeModel::class,
45  'Time' => CustomFieldTimeTypeModel::class,
46  ];
47 
51  public function __construct(
52  ?string $name = null
53  ) {
54  $this->name = $name;
55  }
56 
61  public function getName()
62  {
63  if (is_null($this->name)) {
65  $data = $this->raw(self::FIELD_NAME);
66  if (is_null($data)) {
67  return null;
68  }
69  $this->name = (string) $data;
70  }
71 
72  return $this->name;
73  }
74 
75 
76 
77 
78 
83  public static function resolveDiscriminatorClass($value): string
84  {
85  $fieldName = FieldType::DISCRIMINATOR_FIELD;
86  if (is_object($value) && isset($value->$fieldName)) {
88  $discriminatorValue = $value->$fieldName;
89  if (isset(self::$discriminatorClasses[$discriminatorValue])) {
90  return self::$discriminatorClasses[$discriminatorValue];
91  }
92  }
93  if (is_array($value) && isset($value[$fieldName])) {
95  $discriminatorValue = $value[$fieldName];
96  if (isset(self::$discriminatorClasses[$discriminatorValue])) {
97  return self::$discriminatorClasses[$discriminatorValue];
98  }
99  }
100 
102  $type = FieldTypeModel::class;
103  return $type;
104  }
105 }