diff options
author | Paul Yang <TeBoring@users.noreply.github.com> | 2017-02-08 10:27:54 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-08 10:27:54 -0800 |
commit | cba04b19e88dba2c13241b733bf7f595f1463082 (patch) | |
tree | da61ea725e19eadce400ae17df845e04f36bc608 /php/ext/google/protobuf/message.c | |
parent | c00274313d03a0a7f10e8f6473541faf3739353b (diff) | |
download | protobuf-cba04b19e88dba2c13241b733bf7f595f1463082.tar.gz protobuf-cba04b19e88dba2c13241b733bf7f595f1463082.tar.bz2 protobuf-cba04b19e88dba2c13241b733bf7f595f1463082.zip |
Implement json encoding decoding for php. (#2682)
Diffstat (limited to 'php/ext/google/protobuf/message.c')
-rw-r--r-- | php/ext/google/protobuf/message.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/php/ext/google/protobuf/message.c b/php/ext/google/protobuf/message.c index f5a9499d..e8b8ae81 100644 --- a/php/ext/google/protobuf/message.c +++ b/php/ext/google/protobuf/message.c @@ -30,6 +30,7 @@ #include <php.h> #include <stdlib.h> +#include <ext/json/php_json.h> #include "protobuf.h" @@ -39,6 +40,8 @@ zend_object_handlers* message_handlers; static zend_function_entry message_methods[] = { PHP_ME(Message, encode, NULL, ZEND_ACC_PUBLIC) PHP_ME(Message, decode, NULL, ZEND_ACC_PUBLIC) + PHP_ME(Message, jsonEncode, NULL, ZEND_ACC_PUBLIC) + PHP_ME(Message, jsonDecode, NULL, ZEND_ACC_PUBLIC) PHP_ME(Message, readOneof, NULL, ZEND_ACC_PROTECTED) PHP_ME(Message, writeOneof, NULL, ZEND_ACC_PROTECTED) PHP_ME(Message, whichOneof, NULL, ZEND_ACC_PROTECTED) @@ -54,6 +57,8 @@ static zval* message_get_property(zval* object, zval* member, int type, const zend_literal* key TSRMLS_DC); static zval** message_get_property_ptr_ptr(zval* object, zval* member, int type, const zend_literal* key TSRMLS_DC); +static HashTable* message_get_properties(zval* object TSRMLS_DC); +static HashTable* message_get_gc(zval* object, zval*** table, int* n TSRMLS_DC); static zend_object_value message_create(zend_class_entry* ce TSRMLS_DC); static void message_free(void* object TSRMLS_DC); @@ -74,6 +79,8 @@ void message_init(TSRMLS_D) { message_handlers->write_property = message_set_property; message_handlers->read_property = message_get_property; message_handlers->get_property_ptr_ptr = message_get_property_ptr_ptr; + message_handlers->get_properties = message_get_properties; + message_handlers->get_gc = message_get_gc; } static void message_set_property(zval* object, zval* member, zval* value, @@ -144,6 +151,17 @@ static zval** message_get_property_ptr_ptr(zval* object, zval* member, int type, return NULL; } +static HashTable* message_get_properties(zval* object TSRMLS_DC) { + return NULL; +} + +static HashTable* message_get_gc(zval* object, zval*** table, int* n TSRMLS_DC) { + zend_object* zobj = Z_OBJ_P(object); + *table = zobj->properties_table; + *n = zobj->ce->default_properties_count; + return NULL; +} + // ----------------------------------------------------------------------------- // C Message Utilities // ----------------------------------------------------------------------------- |