aboutsummaryrefslogtreecommitdiffhomepage
path: root/php/src/Google/Protobuf/Internal
diff options
context:
space:
mode:
authorGravatar Paul Yang <TeBoring@users.noreply.github.com>2017-05-29 22:04:20 -0700
committerGravatar GitHub <noreply@github.com>2017-05-29 22:04:20 -0700
commit1e86ef4e9f0b9c9e8bd8d62a61e141f139366920 (patch)
tree9f71f15fab7555ea8cf4ec943165f4b1a19318f9 /php/src/Google/Protobuf/Internal
parent282fb9e68ec101b7b7616a45279427944afc3e6b (diff)
Oneof field should be serialized even it's equal to default. (#3153)
Diffstat (limited to 'php/src/Google/Protobuf/Internal')
-rw-r--r--php/src/Google/Protobuf/Internal/Message.php7
1 files changed, 7 insertions, 0 deletions
diff --git a/php/src/Google/Protobuf/Internal/Message.php b/php/src/Google/Protobuf/Internal/Message.php
index cd15e0f0..10c639ac 100644
--- a/php/src/Google/Protobuf/Internal/Message.php
+++ b/php/src/Google/Protobuf/Internal/Message.php
@@ -739,6 +739,13 @@ class Message
*/
private function existField($field)
{
+ $oneof_index = $field->getOneofIndex();
+ if ($oneof_index !== -1) {
+ $oneof = $this->desc->getOneofDecl()[$oneof_index];
+ $oneof_name = $oneof->getName();
+ return $this->$oneof_name->getNumber() === $field->getNumber();
+ }
+
$getter = $field->getGetter();
$value = $this->$getter();
return $value !== $this->defaultValue($field);