소스 검색

PHP: support 7.0 on PHP implementation (#2162)

* PHP: support 7.0

* Also fix in test_util.php
Stanley Cheung 9 년 전
부모
커밋
9372292b29
2개의 변경된 파일27개의 추가작업 그리고 22개의 파일을 삭제
  1. 24 21
      php/src/Google/Protobuf/Internal/Message.php
  2. 3 1
      php/tests/test_util.php

+ 24 - 21
php/src/Google/Protobuf/Internal/Message.php

@@ -81,41 +81,44 @@ class Message
                 switch ($value_field->getType()) {
                     case GPBType::MESSAGE:
                     case GPBType::GROUP:
-                        $this->$setter(
-                            new MapField(
-                                $key_field->getType(),
-                                $value_field->getType(),
-                                $value_field->getMessageType()->getClass()));
+                        $map_field = new MapField(
+                            $key_field->getType(),
+                            $value_field->getType(),
+                            $value_field->getMessageType()->getClass());
+                        $this->$setter($map_field);
                         break;
                     case GPBType::ENUM:
-                        $this->$setter(
-                            new MapField(
-                                $key_field->getType(),
-                                $value_field->getType(),
-                                $value_field->getEnumType()->getClass()));
+                        $map_field = new MapField(
+                            $key_field->getType(),
+                            $value_field->getType(),
+                            $value_field->getEnumType()->getClass());
+                        $this->$setter($map_field);
                         break;
                     default:
-                        $this->$setter(new MapField($key_field->getType(),
-                                                    $value_field->getType()));
+                        $map_field = new MapField(
+                            $key_field->getType(),
+                            $value_field->getType());
+                        $this->$setter($map_field);
                         break;
                 }
             } else if ($field->getLabel() === GPBLabel::REPEATED) {
                 switch ($field->getType()) {
                     case GPBType::MESSAGE:
                     case GPBType::GROUP:
-                        $this->$setter(
-                            new RepeatedField(
-                                $field->getType(),
-                                $field->getMessageType()->getClass()));
+                        $repeated_field = new RepeatedField(
+                            $field->getType(),
+                            $field->getMessageType()->getClass());
+                        $this->$setter($repeated_field);
                         break;
                     case GPBType::ENUM:
-                        $this->$setter(
-                            new RepeatedField(
-                                $field->getType(),
-                                $field->getEnumType()->getClass()));
+                        $repeated_field = new RepeatedField(
+                            $field->getType(),
+                            $field->getEnumType()->getClass());
+                        $this->$setter($repeated_field);
                         break;
                     default:
-                        $this->$setter(new RepeatedField($field->getType()));
+                        $repeated_field = new RepeatedField($field->getType());
+                        $this->$setter($repeated_field);
                         break;
                 }
             } else if ($field->getOneofIndex() !== -1) {

+ 3 - 1
php/tests/test_util.php

@@ -50,6 +50,8 @@ class TestUtil
 
     public static function setTestMessage(TestMessage $m)
     {
+        $sub = new TestMessage_Sub();
+
         $m->setOptionalInt32(-42);
         $m->setOptionalInt64(-43);
         $m->setOptionalUint32(42);
@@ -66,7 +68,7 @@ class TestUtil
         $m->setOptionalString('a');
         $m->setOptionalBytes('b');
         $m->setOptionalEnum(TestEnum::ONE);
-        $m->setOptionalMessage(new TestMessage_Sub());
+        $m->setOptionalMessage($sub);
         $m->getOptionalMessage()->SetA(33);
 
         $m->getRepeatedInt32()    []= -42;