aboutsummaryrefslogtreecommitdiffhomepage
path: root/php/src/Google/Protobuf/Internal/RepeatedField.php
diff options
context:
space:
mode:
authorGravatar Adam Cozzette <acozzette@google.com>2018-06-25 13:22:10 -0700
committerGravatar Adam Cozzette <acozzette@google.com>2018-06-25 13:22:10 -0700
commit82d3d7d250645322f8a7343188e5ae6246a76414 (patch)
tree34b7acb87b15c3b8395df3d311f2e795a1285d60 /php/src/Google/Protobuf/Internal/RepeatedField.php
parent35567c166842cca3ff6af3226ff526f25c79507f (diff)
parentf7ada1280fac4af717d478e6a9765d3f02b418b3 (diff)
Merge branch '3.6.x' into merge-3-6-x
Diffstat (limited to 'php/src/Google/Protobuf/Internal/RepeatedField.php')
-rw-r--r--php/src/Google/Protobuf/Internal/RepeatedField.php23
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]