Browse Source

Make assertEquals pass for message (#4947)

This change only makes assertEquals pass for message in c extension. However, it actually does nothing.
This is the same behavior before 3.6.0 release.
Paul Yang 7 years ago
parent
commit
fc90fd6df1
2 changed files with 14 additions and 7 deletions
  1. 1 7
      php/ext/google/protobuf/message.c
  2. 13 0
      php/tests/generated_class_test.php

+ 1 - 7
php/ext/google/protobuf/message.c

@@ -222,13 +222,7 @@ static zval* message_get_property_ptr_ptr(zval* object, zval* member, int type,
 }
 
 static HashTable* message_get_properties(zval* object TSRMLS_DC) {
-  // User cannot get property directly (e.g., $a = $m->a)
-  zend_error(E_USER_ERROR, "Cannot access private properties.");
-#if PHP_MAJOR_VERSION < 7
-  return zend_std_get_properties(object TSRMLS_CC);
-#else
-  return zend_std_get_properties(object);
-#endif
+  return NULL;
 }
 
 static HashTable* message_get_gc(zval* object, CACHED_VALUE** table,

+ 13 - 0
php/tests/generated_class_test.php

@@ -1342,4 +1342,17 @@ class GeneratedClassTest extends TestBase
 
         TestUtil::assertTestMessage($m);
     }
+
+    #########################################################
+    # Test message equals.
+    #########################################################
+
+    public function testMessageEquals()
+    {
+        $m = new TestMessage();
+        TestUtil::setTestMessage($m);
+        $n = new TestMessage();
+        TestUtil::setTestMessage($n);
+        $this->assertEquals($m, $n);
+    }
 }