免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7861 | 回复: 0

PHP的扩展如何返回一个结构体或者对象? [复制链接]

论坛徽章:
0
发表于 2018-01-30 16:45 |显示全部楼层

我写了一个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,&param) == 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);  //这里我不只要返回一个值,我想返回多个值(一个结构体或对象)
   

}


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

数据风云,十年变迁
DTCC 第十届中国数据库技术大会已启航!

2019年5月8日~5月10日,由IT168旗下ITPUB企业社区平台主办的第十届中国数据库技术大会(DTCC2019),将在北京隆重召开。大会将邀请百余位行业专家,就热点技术话题进行分享,是广大数据领域从业人士的又一次年度盛会和交流平台。与SACC2018类似,本届大会将采用“3+2”模式:3天传统技术演讲+2天深度主题培训。大会不仅提供超100场的主题演讲,还会提供连续2天的深度课程培训,深化数据领域的项目落地实践方案。
DTCC2019,一场值得期待的数据技术盛会,殷切地希望您报名参与!

活动入口>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP