- 论坛徽章:
- 0
|
我写了一个PHP的扩展函数,需要返回值,返回的值有多个,所以我想返回一个结构体或者一个对象给调用的PHP
如果能返回的是结构体,那PHP端应该怎么接?
如果不能返回结构体,返回一个对象PHP端怎么接?
//多针消息结构体
typedef struct tagST_MUITI_FRAME_INFO
{
uint32 lAllDataSize; //数据总大小
uint16 unPacketNum; //拆分数据包个数
uint16 unPacketIndex; //拆分数据包索引,起始值为0
uint16 unPacketSize; //拆分数据包大小
uint16 unRsv; //预留
}ST_MUITI_FRAME_INFO;
//协议数据结构体
typedef struct tagST_MESSAGE_INFO
{
int32 lMsgID; //消息ID
int32 lMsgLen; //消息长度
int8 cFrameType; //0:单帧,1:多帧
int8 acRsv[31];
ST_MUITI_FRAME_INFO stMultiFrameInfo;
int8 acMsgBuff[0];
}ST_MESSAGE_INFO;
PHP_FUNCTION(GetMessageData)
{
char *pcSegData = NULL;
size_t lStrLen = 0;
size_t lSegDataLen = 0;
size_t lMessageInfoLen = 0;
zval *param;
zval *Message;
zval retval;
// zend_object *
ST_MESSAGE_INFO *pstMessageInfo = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "slz",&pcSegData,&lSegDataLen,¶m) == FAILURE) {
return;
}
lMessageInfoLen = sizeof(ST_MESSAGE_INFO) + lSegDataLen;
pstMessageInfo = (ST_MESSAGE_INFO*)malloc(lMessageInfoLen);
if (NULL == pstMessageInfo)
{
printf("malloc failed! in %s\n",__FUNCTION__);
goto end;
}
end:
RETURN_ZVAL(&retval, 0, 1); //这里我不只要返回一个值,我想返回多个值(一个结构体或对象)
}
|
|