Enum defined without package have incorrect class name. (#2988)

Fix the bug by sharing the code for generating class name for both
message and enum.
diff --git a/php/tests/generated_class_test.php b/php/tests/generated_class_test.php
index 39e6c6c..41d63a6 100644
--- a/php/tests/generated_class_test.php
+++ b/php/tests/generated_class_test.php
@@ -1,7 +1,7 @@
 <?php
 
-require_once('generated/NoNameSpaceEnum.php');
-require_once('generated/NoNameSpaceMessage.php');
+require_once('generated/NoNamespaceEnum.php');
+require_once('generated/NoNamespaceMessage.php');
 require_once('test_base.php');
 require_once('test_util.php');
 
@@ -832,12 +832,16 @@
 
     public function testMessageWithoutNamespace()
     {
-        $m = new NoNameSpaceMessage();
+        $m = new TestMessage();
+        $m->setOptionalNoNamespaceMessage(new NoNameSpaceMessage());
+        $m->getRepeatedNoNamespaceMessage()[] = new NoNameSpaceMessage();
     }
 
     public function testEnumWithoutNamespace()
     {
-        $m = new NoNameSpaceEnum();
+        $m = new TestMessage();
+        $m->setOptionalNoNamespaceEnum(NoNameSpaceEnum::VALUE_A);
+        $m->getRepeatedNoNamespaceEnum()[] = NoNameSpaceEnum::VALUE_A;
     }
 
     #########################################################
diff --git a/php/tests/memory_leak_test.php b/php/tests/memory_leak_test.php
index 68b6f5b..6b7077f 100644
--- a/php/tests/memory_leak_test.php
+++ b/php/tests/memory_leak_test.php
@@ -2,6 +2,8 @@
 
 # phpunit has memory leak by itself. Thus, it cannot be used to test memory leak.
 
+require_once('generated/NoNamespaceEnum.php');
+require_once('generated/NoNamespaceMessage.php');
 require_once('generated/PrefixTestPrefix.php');
 require_once('generated/Bar/TestInclude.php');
 require_once('generated/Foo/TestEnum.php');
@@ -13,6 +15,7 @@
 require_once('generated/Foo/TestUnpackedMessage.php');
 require_once('generated/GPBMetadata/Proto/Test.php');
 require_once('generated/GPBMetadata/Proto/TestInclude.php');
+require_once('generated/GPBMetadata/Proto/TestNoNamespace.php');
 require_once('generated/GPBMetadata/Proto/TestPrefix.php');
 require_once('test_util.php');
 
diff --git a/php/tests/proto/test.proto b/php/tests/proto/test.proto
index 1a47a3f..cc9bf8c 100644
--- a/php/tests/proto/test.proto
+++ b/php/tests/proto/test.proto
@@ -1,6 +1,7 @@
 syntax = "proto3";
 
 import 'proto/test_include.proto';
+import 'proto/test_no_namespace.proto';
 import 'proto/test_prefix.proto';
 
 package foo;
@@ -96,6 +97,11 @@
 
   // Reserved for non-existing field test.
   // int32 non_exist = 89;
+
+  NoNamespaceMessage optional_no_namespace_message = 91;
+  NoNamespaceEnum optional_no_namespace_enum = 92;
+  repeated NoNamespaceMessage repeated_no_namespace_message = 93;
+  repeated NoNamespaceEnum repeated_no_namespace_enum = 94;
 }
 
 enum TestEnum {
diff --git a/php/tests/proto/test_no_namespace.proto b/php/tests/proto/test_no_namespace.proto
index b8c4fdf..b0f6600 100644
--- a/php/tests/proto/test_no_namespace.proto
+++ b/php/tests/proto/test_no_namespace.proto
@@ -1,10 +1,10 @@
 syntax = "proto3";
 
-message NoNameSpaceMessage {
+message NoNamespaceMessage {
   int32 a = 1;
 }
 
-enum NoNameSpaceEnum {
+enum NoNamespaceEnum {
   VALUE_A = 0;
   VALUE_B = 1;
 }