aboutsummaryrefslogtreecommitdiffhomepage
path: root/php/ext
diff options
context:
space:
mode:
authorGravatar Paul Yang <TeBoring@users.noreply.github.com>2017-08-02 18:33:25 -0700
committerGravatar GitHub <noreply@github.com>2017-08-02 18:33:25 -0700
commit25672c175792f707c71c9aa9fcd29cab31c757fa (patch)
tree8694aeec1617ab1c1fd07473878bd1ac4d085a58 /php/ext
parent9df89ccabcf8ad7d634009a00faf0e9ba153bdb7 (diff)
Add getClass for php Descriptor in c extension (#3443)
Diffstat (limited to 'php/ext')
-rw-r--r--php/ext/google/protobuf/def.c11
-rw-r--r--php/ext/google/protobuf/protobuf.h1
2 files changed, 12 insertions, 0 deletions
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);