msgpack extensionによって php に実装されたmsgpack 。
関数 と メソッド の 2 つがmsgpack_pack
ありmsgpack_serialize
ますMessagePack::pack
。それらの違いは何なのかわかりません。この拡張機能の API を見つけるには?
msgpack extensionによって php に実装されたmsgpack 。
関数 と メソッド の 2 つがmsgpack_pack
ありmsgpack_serialize
ますMessagePack::pack
。それらの違いは何なのかわかりません。この拡張機能の API を見つけるには?
それらは同じです。
これはmsgpack_serialize
、関数を呼び出しますphp_msgpack_serialize
。
static ZEND_FUNCTION(msgpack_serialize)
{
zval *parameter;
smart_str buf = {0};
if (zend_parse_parameters(
ZEND_NUM_ARGS() TSRMLS_CC, "z", ¶meter) == FAILURE)
{
return;
}
php_msgpack_serialize(&buf, parameter TSRMLS_CC);
ZVAL_STRINGL(return_value, buf.c, buf.len, 1);
smart_str_free(&buf);
}
と msgpack_pack
のエイリアスですmsgpack_serialize
。
// in msgpack.c
static zend_function_entry msgpack_functions[] = {
ZEND_FE(msgpack_serialize, arginfo_msgpack_serialize)
ZEND_FE(msgpack_unserialize, arginfo_msgpack_unserialize)
ZEND_FALIAS(msgpack_pack, msgpack_serialize, arginfo_msgpack_serialize)
ZEND_FALIAS(msgpack_unpack, msgpack_unserialize, arginfo_msgpack_unserialize)
{NULL, NULL, NULL}
};
MessagePack::pack
のオブジェクト形式ですmsgpack_serialize
。また、次のように呼び出しますphp_msgpack_serialize
。
static ZEND_METHOD(msgpack, pack)
{
zval *parameter;
smart_str buf = {0};
int php_only = MSGPACK_G(php_only);
MSGPACK_BASE_OBJECT;
if (zend_parse_parameters(
ZEND_NUM_ARGS() TSRMLS_CC, "z", ¶meter) == FAILURE)
{
return;
}
MSGPACK_G(php_only) = base->php_only;
php_msgpack_serialize(&buf, parameter TSRMLS_CC);
MSGPACK_G(php_only) = php_only;
ZVAL_STRINGL(return_value, buf.c, buf.len, 1);
smart_str_free(&buf);
}