Add ARRAY for reserved name (#3150)

diff --git a/php/ext/google/protobuf/def.c b/php/ext/google/protobuf/def.c
index 8e563a6..099ebd0 100644
--- a/php/ext/google/protobuf/def.c
+++ b/php/ext/google/protobuf/def.c
@@ -30,8 +30,8 @@
 
 #include "protobuf.h"
 
-const char* const kReservedNames[] = {"Empty"};
-const int kReservedNamesSize = 1;
+const char* const kReservedNames[] = {"Empty", "ECHO", "ARRAY"};
+const int kReservedNamesSize = 3;
 
 // Forward declare.
 static void descriptor_init_c_instance(Descriptor* intern TSRMLS_DC);
diff --git a/php/src/Google/Protobuf/descriptor.php b/php/src/Google/Protobuf/descriptor.php
index fb69eda..35e4929 100644
--- a/php/src/Google/Protobuf/descriptor.php
+++ b/php/src/Google/Protobuf/descriptor.php
@@ -236,7 +236,7 @@
         return $prefix;
     }
 
-    $reserved_words = array("Empty");
+    $reserved_words = array("Empty", "ECHO", "ARRAY");
     foreach ($reserved_words as $reserved_word) {
         if ($classname === $reserved_word) {
             if ($file_proto->getPackage() === "google.protobuf") {
diff --git a/php/tests/generated_class_test.php b/php/tests/generated_class_test.php
index b42397b..be641b6 100644
--- a/php/tests/generated_class_test.php
+++ b/php/tests/generated_class_test.php
@@ -876,6 +876,7 @@
         $m = new \Foo\TestMessage_Empty();
         $m = new \Foo\PBEmpty();
         $m = new \PrefixEmpty();
+        $m = new \Foo\PBARRAY();
     }
 
     #########################################################
@@ -886,8 +887,8 @@
     {
         $m = (new TestMessage())
             ->setOptionalInt32(1)
-            ->setOptionalInt64(2);
+            ->setOptionalUInt32(2);
         $this->assertSame(1, $m->getOptionalInt32());
-        $this->assertSame(2, $m->getOptionalInt64());
+        $this->assertSame(2, $m->getOptionalUInt32());
     }
 }
diff --git a/php/tests/memory_leak_test.php b/php/tests/memory_leak_test.php
index 361982b..5eac56f 100644
--- a/php/tests/memory_leak_test.php
+++ b/php/tests/memory_leak_test.php
@@ -8,6 +8,7 @@
 require_once('generated/PrefixEmpty.php');
 require_once('generated/PrefixTestPrefix.php');
 require_once('generated/Bar/TestInclude.php');
+require_once('generated/Foo/PBARRAY.php');
 require_once('generated/Foo/PBEmpty.php');
 require_once('generated/Foo/TestEnum.php');
 require_once('generated/Foo/TestIncludePrefixMessage.php');
diff --git a/php/tests/proto/test.proto b/php/tests/proto/test.proto
index 3922925..583bf8e 100644
--- a/php/tests/proto/test.proto
+++ b/php/tests/proto/test.proto
@@ -127,6 +127,10 @@
   int32 a = 1;
 }
 
+message ARRAY {
+  int32 a = 1;
+}
+
 message TestPackedMessage {
   repeated int32    repeated_int32    = 90  [packed = true];
   repeated int64    repeated_int64    = 91  [packed = true];