From 25672c175792f707c71c9aa9fcd29cab31c757fa Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 2 Aug 2017 18:33:25 -0700 Subject: Add getClass for php Descriptor in c extension (#3443) --- php/ext/google/protobuf/def.c | 11 +++++++++++ php/ext/google/protobuf/protobuf.h | 1 + 2 files changed, 12 insertions(+) (limited to 'php/ext') diff --git a/php/ext/google/protobuf/def.c b/php/ext/google/protobuf/def.c index ae17455c..f885c145 100644 --- a/php/ext/google/protobuf/def.c +++ b/php/ext/google/protobuf/def.c @@ -184,6 +184,7 @@ void gpb_type_init(TSRMLS_D) { // ----------------------------------------------------------------------------- static zend_function_entry descriptor_methods[] = { + PHP_ME(Descriptor, getClass, NULL, ZEND_ACC_PUBLIC) PHP_ME(Descriptor, getFullName, NULL, ZEND_ACC_PUBLIC) PHP_ME(Descriptor, getField, NULL, ZEND_ACC_PUBLIC) PHP_ME(Descriptor, getFieldCount, NULL, ZEND_ACC_PUBLIC) @@ -234,6 +235,16 @@ static void descriptor_init_c_instance(Descriptor *desc TSRMLS_DC) { desc->json_serialize_handlers_preserve = NULL; } +PHP_METHOD(Descriptor, getClass) { + Descriptor *intern = UNBOX(Descriptor, getThis()); +#if PHP_MAJOR_VERSION < 7 + const char* classname = intern->klass->name; +#else + const char* classname = ZSTR_VAL(intern->klass->name); +#endif + PHP_PROTO_RETVAL_STRINGL(classname, strlen(classname), 1); +} + PHP_METHOD(Descriptor, getFullName) { Descriptor *intern = UNBOX(Descriptor, getThis()); const char* fullname = upb_msgdef_fullname(intern->msgdef); diff --git a/php/ext/google/protobuf/protobuf.h b/php/ext/google/protobuf/protobuf.h index 1f79fe8c..44a4155f 100644 --- a/php/ext/google/protobuf/protobuf.h +++ b/php/ext/google/protobuf/protobuf.h @@ -508,6 +508,7 @@ PHP_PROTO_WRAP_OBJECT_START(Descriptor) const upb_handlers* json_serialize_handlers_preserve; PHP_PROTO_WRAP_OBJECT_END +PHP_METHOD(Descriptor, getClass); PHP_METHOD(Descriptor, getFullName); PHP_METHOD(Descriptor, getField); PHP_METHOD(Descriptor, getFieldCount); -- cgit v1.2.3