diff options
author | Adam Cozzette <acozzette@gmail.com> | 2018-06-25 15:52:29 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-25 15:52:29 -0700 |
commit | d6f346b4d55ae5112934297593ec1c56c3d178a5 (patch) | |
tree | 021b5476160e465a20ef7d4ae4c0524351667233 /php/src/Google/Protobuf/Internal/RepeatedField.php | |
parent | 3d603f481ed142d0be5e8e4dd6d1cb4457a51405 (diff) | |
parent | 82d3d7d250645322f8a7343188e5ae6246a76414 (diff) |
Merge pull request #4827 from acozzette/merge-3-6-x
Merge 3.6.x branch into master
Diffstat (limited to 'php/src/Google/Protobuf/Internal/RepeatedField.php')
-rw-r--r-- | php/src/Google/Protobuf/Internal/RepeatedField.php | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/php/src/Google/Protobuf/Internal/RepeatedField.php b/php/src/Google/Protobuf/Internal/RepeatedField.php index 797b3b3a..e0ddef50 100644 --- a/php/src/Google/Protobuf/Internal/RepeatedField.php +++ b/php/src/Google/Protobuf/Internal/RepeatedField.php @@ -59,6 +59,10 @@ class RepeatedField implements \ArrayAccess, \IteratorAggregate, \Countable * @ignore */ private $klass; + /** + * @ignore + */ + private $legacy_klass; /** * Constructs an instance of RepeatedField. @@ -71,7 +75,16 @@ class RepeatedField implements \ArrayAccess, \IteratorAggregate, \Countable { $this->container = []; $this->type = $type; - $this->klass = $klass; + if ($this->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(); + } } /** @@ -91,6 +104,14 @@ class RepeatedField implements \ArrayAccess, \IteratorAggregate, \Countable } /** + * @ignore + */ + public function getLegacyClass() + { + return $this->legacy_klass; + } + + /** * Return the element at the given index. * * This will also be called for: $ele = $arr[0] |