Add nested enum descriptor in php rumtime. (#3009)

diff --git a/php/src/Google/Protobuf/Internal/DescriptorPool.php b/php/src/Google/Protobuf/Internal/DescriptorPool.php
index 1ef403c..2c00dfb 100644
--- a/php/src/Google/Protobuf/Internal/DescriptorPool.php
+++ b/php/src/Google/Protobuf/Internal/DescriptorPool.php
@@ -95,6 +95,9 @@
         foreach ($descriptor->getNestedType() as $nested_type) {
             $this->addDescriptor($nested_type);
         }
+        foreach ($descriptor->getEnumType() as $enum_type) {
+            $this->addEnumDescriptor($enum_type);
+        }
     }
 
     public function addEnumDescriptor($descriptor)
diff --git a/php/src/Google/Protobuf/descriptor.php b/php/src/Google/Protobuf/descriptor.php
index 9c744a8..fb69eda 100644
--- a/php/src/Google/Protobuf/descriptor.php
+++ b/php/src/Google/Protobuf/descriptor.php
@@ -210,6 +210,12 @@
               $nested_proto, $file_proto, $message_name_without_package));
         }
 
+        // Handle nested enum.
+        foreach ($proto->getEnumType() as $enum_proto) {
+            $desc->addEnumType(EnumDescriptor::buildFromProto(
+              $enum_proto, $file_proto, $message_name_without_package));
+        }
+
         // Handle oneof fields.
         foreach ($proto->getOneofDecl() as $oneof_proto) {
             $desc->addOneofDecl(
diff --git a/php/tests/generated_class_test.php b/php/tests/generated_class_test.php
index 554d2be..21ee849 100644
--- a/php/tests/generated_class_test.php
+++ b/php/tests/generated_class_test.php
@@ -839,7 +839,8 @@
     public function testMessageWithoutNamespace()
     {
         $m = new TestMessage();
-        $m->setOptionalNoNamespaceMessage(new NoNameSpaceMessage());
+        $sub = new NoNameSpaceMessage();
+        $m->setOptionalNoNamespaceMessage($sub);
         $m->getRepeatedNoNamespaceMessage()[] = new NoNameSpaceMessage();
 
         $n = new NoNamespaceMessage();