aboutsummaryrefslogtreecommitdiff
path: root/php/ext/google/protobuf/message.c
diff options
context:
space:
mode:
authorPaul Yang <TeBoring@users.noreply.github.com>2017-02-08 10:27:54 -0800
committerGitHub <noreply@github.com>2017-02-08 10:27:54 -0800
commitcba04b19e88dba2c13241b733bf7f595f1463082 (patch)
treeda61ea725e19eadce400ae17df845e04f36bc608 /php/ext/google/protobuf/message.c
parentc00274313d03a0a7f10e8f6473541faf3739353b (diff)
downloadprotobuf-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.c18
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
// -----------------------------------------------------------------------------