diff options
author | Adam Cozzette <acozzette@google.com> | 2018-06-25 13:22:10 -0700 |
---|---|---|
committer | Adam Cozzette <acozzette@google.com> | 2018-06-25 13:22:10 -0700 |
commit | 82d3d7d250645322f8a7343188e5ae6246a76414 (patch) | |
tree | 34b7acb87b15c3b8395df3d311f2e795a1285d60 /php/src/Google/Protobuf/Internal/MapField.php | |
parent | 35567c166842cca3ff6af3226ff526f25c79507f (diff) | |
parent | f7ada1280fac4af717d478e6a9765d3f02b418b3 (diff) |
Merge branch '3.6.x' into merge-3-6-x
Diffstat (limited to 'php/src/Google/Protobuf/Internal/MapField.php')
-rw-r--r-- | php/src/Google/Protobuf/Internal/MapField.php | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/php/src/Google/Protobuf/Internal/MapField.php b/php/src/Google/Protobuf/Internal/MapField.php index 38736dad..f7d7b710 100644 --- a/php/src/Google/Protobuf/Internal/MapField.php +++ b/php/src/Google/Protobuf/Internal/MapField.php @@ -58,7 +58,11 @@ class MapField implements \ArrayAccess, \IteratorAggregate, \Countable /** * @ignore */ - private $value_klass; + private $klass; + /** + * @ignore + */ + private $legacy_klass; /** * Constructs an instance of MapField. @@ -75,6 +79,17 @@ class MapField implements \ArrayAccess, \IteratorAggregate, \Countable $this->key_type = $key_type; $this->value_type = $value_type; $this->klass = $klass; + + if ($this->value_type == GPBType::MESSAGE) { + $pool = DescriptorPool::getGeneratedPool(); + $desc = $pool->getDescriptorByClassName($klass); + if ($desc == NULL) { + new $klass; // No msg class instance has been created before. + $desc = $pool->getDescriptorByClassName($klass); + } + $this->klass = $desc->getClass(); + $this->legacy_klass = $desc->getLegacyClass(); + } } /** @@ -102,6 +117,14 @@ class MapField implements \ArrayAccess, \IteratorAggregate, \Countable } /** + * @ignore + */ + public function getLegacyValueClass() + { + return $this->legacy_klass; + } + + /** * Return the element at the given key. * * This will also be called for: $ele = $arr[$key] |