[PHP] Fix discriminator handling (#4246)

* [PHP] Fix discriminator handling

* [PHP] Fix discriminator handling (Update examples)
This commit is contained in:
Robert Biehl
2016-11-25 09:12:41 +01:00
committed by wing328
parent c15743bfe6
commit 1ea9865a44
42 changed files with 216 additions and 119 deletions

View File

@@ -214,7 +214,7 @@ class ObjectSerializer
*
* @return object|array|null an single or an array of $class instances
*/
public static function deserialize($data, $class, $httpHeaders = null, $discriminator = null)
public static function deserialize($data, $class, $httpHeaders = null)
{
if (null === $data) {
return null;
@@ -225,7 +225,7 @@ class ObjectSerializer
$subClass_array = explode(',', $inner, 2);
$subClass = $subClass_array[1];
foreach ($data as $key => $value) {
$deserialized[$key] = self::deserialize($value, $subClass, null, $discriminator);
$deserialized[$key] = self::deserialize($value, $subClass, null);
}
}
return $deserialized;
@@ -233,7 +233,7 @@ class ObjectSerializer
$subClass = substr($class, 0, -2);
$values = [];
foreach ($data as $key => $value) {
$values[] = self::deserialize($value, $subClass, null, $discriminator);
$values[] = self::deserialize($value, $subClass, null);
}
return $values;
} elseif ($class === 'object') {
@@ -271,6 +271,7 @@ class ObjectSerializer
return $deserialized;
} else {
// If a discriminator is defined and points to a valid subclass, use it.
$discriminator = $class::DISCRIMINATOR;
if (!empty($discriminator) && isset($data->{$discriminator}) && is_string($data->{$discriminator})) {
$subclass = '\Swagger\Client\Model\\' . $data->{$discriminator};
if (is_subclass_of($subclass, $class)) {
@@ -287,7 +288,7 @@ class ObjectSerializer
$propertyValue = $data->{$instance::attributeMap()[$property]};
if (isset($propertyValue)) {
$instance->$propertySetter(self::deserialize($propertyValue, $type, null, $discriminator));
$instance->$propertySetter(self::deserialize($propertyValue, $type, null));
}
}
return $instance;