|
38 | 38 | $propConstExt = $property->getFieldConstantExtensionName(); |
39 | 39 |
|
40 | 40 | if ($propType->isPrimitiveOrListType() || $propType->hasPrimitiveOrListParent()) : ?> |
41 | | - if (!is_array($json)) { |
42 | | - $type->setValue($json); |
43 | | - return $type; |
44 | | - } |
45 | 41 | if ([] === $json) { |
46 | 42 | return $type; |
47 | 43 | } |
|
63 | 59 | $type-><?php echo $setter; ?>($json[self::<?php echo $propConst; ?>]); |
64 | 60 | } |
65 | 61 | <?php elseif ($propType->isPrimitiveContainer() || $propType->hasPrimitiveContainerParent() || $propType->isValueContainer()) : ?> |
66 | | - if (isset($json[self::<?php echo $propConst; ?>]) || isset($json[self::<?php echo $propConstExt; ?>]) || array_key_exists(self::<?php echo $propConst; ?>, $json) || array_key_exists(self::<?php echo $propConstExt; ?>, $json)) { |
67 | | - $value = $json[self::<?php echo $propConst; ?>] ?? null; |
68 | | - $ext = (array)($json[self::<?php echo $propConstExt; ?>] ?? []); |
| 62 | + if (isset($json[self::<?php echo $propConst; ?>]) |
| 63 | + || isset($json[self::<?php echo $propConstExt; ?>]) |
| 64 | + || array_key_exists(self::<?php echo $propConst; ?>, $json) |
| 65 | + || array_key_exists(self::<?php echo $propConstExt; ?>, $json)) { |
69 | 66 | <?php if ($property->isCollection()) : ?> |
70 | | - if (!is_array($value)) { |
71 | | - $value = [$value]; |
72 | | - } |
| 67 | + $value = (array)($json[self::<?php echo $propConst; ?>] ?? []); |
| 68 | + $ext = (array)($json[self::<?php echo $propConstExt; ?>] ?? []); |
73 | 69 | $cnt = count($value); |
74 | 70 | $extCnt = count($ext); |
75 | 71 | if ($extCnt > $cnt) { |
76 | 72 | $cnt = $extCnt; |
77 | 73 | } |
78 | 74 | for ($i = 0; $i < $cnt; $i++) { |
79 | 75 | $type-><?php echo $setter; ?>(<?php echo $propTypeClass; ?>::jsonUnserialize( |
80 | | - json: [<?php echo $propTypeClass; ?>::FIELD_VALUE => $value[$i] ?? null] + (array)($ext[$i] ?? []), |
81 | | - config: $config, |
| 76 | + [<?php echo $propTypeClass; ?>::FIELD_VALUE => $value[$i] ?? null] + ($ext[$i] ?? []), |
| 77 | + $config, |
82 | 78 | )); |
83 | 79 | } |
84 | 80 | <?php else : ?> |
| 81 | + $value = $json[self::<?php echo $propConst; ?>] ?? null; |
85 | 82 | $type-><?php echo $setter; ?>(<?php echo $propTypeClass; ?>::jsonUnserialize( |
86 | | - json: [<?php echo $propTypeClass; ?>::FIELD_VALUE => $value] + $ext, |
87 | | - config: $config, |
| 83 | + (is_array($value) ? $value : [<?php echo $propTypeClass; ?>::FIELD_VALUE => $value]) + ($json[self::<?php echo $propConstExt; ?>] ?? []), |
| 84 | + $config, |
88 | 85 | )); |
89 | 86 | <?php endif; ?> |
90 | 87 | } |
|
98 | 95 | foreach($d as $v) { |
99 | 96 | $typeClassName = <?php echo PHPFHIR_VERSION_CLASSNAME_VERSION_TYPE_MAP; ?>::getContainedTypeClassNameFromArray($v); |
100 | 97 | unset($v[<?php echo PHPFHIR_CLASSNAME_CONSTANTS; ?>::JSON_FIELD_RESOURCE_TYPE]); |
101 | | - $type-><?php echo $setter; ?>($typeClassName::jsonUnserialize( |
102 | | - json: $v, |
103 | | - config: $config, |
104 | | - )); |
| 98 | + $type-><?php echo $setter; ?>($typeClassName::jsonUnserialize($v, $config)); |
105 | 99 | } |
106 | 100 | <?php else : ?> |
107 | 101 | $typeClassName = <?php echo PHPFHIR_VERSION_CLASSNAME_VERSION_TYPE_MAP; ?>::getContainedTypeClassNameFromArray($json[self::<?php echo $propConst; ?>]); |
108 | 102 | $d = $json[self::<?php echo $propConst; ?>]; |
109 | 103 | unset($d[<?php echo PHPFHIR_CLASSNAME_CONSTANTS; ?>::JSON_FIELD_RESOURCE_TYPE]); |
110 | | - $type-><?php echo $setter; ?>($typeClassName::jsonUnserialize( |
111 | | - json: $d, |
112 | | - config: $config, |
113 | | - )); |
| 104 | + $type-><?php echo $setter; ?>($typeClassName::jsonUnserialize($d, $config)); |
114 | 105 | <?php endif; ?> |
115 | 106 | } |
116 | 107 | <?php else : ?> |
|
121 | 112 | $vs = [$vs]; |
122 | 113 | } |
123 | 114 | foreach($vs as $v) { |
124 | | - $type-><?php echo $setter; ?>(<?php echo $propTypeClass; ?>::jsonUnserialize( |
125 | | - json: $v, |
126 | | - config: $config, |
127 | | - )); |
| 115 | + $type-><?php echo $setter; ?>(<?php echo $propTypeClass; ?>::jsonUnserialize($v, $config)); |
128 | 116 | } |
129 | 117 | <?php else : ?> |
130 | | - $type-><?php echo $setter; ?>(<?php echo $propTypeClass; ?>::jsonUnserialize( |
131 | | - json: $json[self::<?php echo $propConst; ?>], |
132 | | - config: $config, |
133 | | - )); |
| 118 | + $type-><?php echo $setter; ?>(<?php echo $propTypeClass; ?>::jsonUnserialize($json[self::<?php echo $propConst; ?>], $config)); |
134 | 119 | <?php endif; ?> |
135 | 120 | } |
136 | 121 | <?php endif; |
|
0 commit comments