Fix well known type class not inheriting Message (#5095)

* Fix well known type class not inheriting Message

Previously, well known types only implement Message interface but not inhert it.
Fix the problem by calling zend_do_inheritance

* Add back commented tests
pull/3082/merge
Paul Yang 7 years ago committed by GitHub
parent 98e26a4195
commit d05926861b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      php/ext/google/protobuf/protobuf.h
  2. 1
      php/tests/well_known_test.php

@ -138,7 +138,8 @@
INIT_CLASS_ENTRY_EX(class_type, CLASSNAME, strlen(CLASSNAME), \
LOWWERNAME##_methods); \
LOWWERNAME##_type = zend_register_internal_class(&class_type TSRMLS_CC); \
LOWWERNAME##_type->create_object = message_create;
LOWWERNAME##_type->create_object = message_create; \
zend_do_inheritance(LOWWERNAME##_type, message_type TSRMLS_CC);
#define PHP_PROTO_INIT_SUBMSGCLASS_END \
}
@ -404,7 +405,7 @@ static inline int php_proto_zend_hash_get_current_data_ex(HashTable* ht,
INIT_CLASS_ENTRY_EX(class_type, CLASSNAME, strlen(CLASSNAME), \
LOWWERNAME##_methods); \
LOWWERNAME##_type = zend_register_internal_class(&class_type TSRMLS_CC); \
LOWWERNAME##_type->create_object = message_create;
zend_do_inheritance(LOWWERNAME##_type, message_type TSRMLS_CC);
#define PHP_PROTO_INIT_SUBMSGCLASS_END \
}

@ -42,6 +42,7 @@ class WellKnownTest extends TestBase {
public function testEmpty()
{
$msg = new GPBEmpty();
$this->assertTrue($msg instanceof \Google\Protobuf\Internal\Message);
}
public function testImportDescriptorProto()

Loading…
Cancel
Save