protocol-buffer - protocolbuffers扩展升级到php7遇到的问题?
高洛峰
高洛峰 2017-04-11 10:14:38
[PHP讨论组]

背景

由于项目中正在使用protocolbuffers,整个项目中使用到的扩展基本都已经支持php7,只有protocolbuffers这个还不支持php7,原作者已经停止维护了该扩展,无奈只能自己开始研究如何将protocolbuffers扩展的5.x版本升级到php7。目前该扩展可以通过编译。github

make test结果如下:

Number of tests :  144               144
Tests skipped   :    0 (  0.0%) --------
Tests warned    :    0 (  0.0%) (  0.0%)
Tests failed    :   67 ( 46.5%) ( 46.5%)
Expected fail   :    0 (  0.0%) (  0.0%)
Tests passed    :   77 ( 53.5%) ( 53.5%)

遇到的问题

以下为测试代码:

setValue(0);

$obj = ProtocolBuffers::decode("Tutorial_Integer32", $bytes);
var_dump($obj);
if ($obj instanceof Tutorial_Integer32) {
    var_dump($obj->getValue());
    if ($obj->getValue() == 0) {
        echo "OK" . PHP_EOL;
    } else {
        var_dump($obj);
    }
} else {
    var_dump($obj);
}

ini_set("protocolbuffers.native_scalars", 1);
$obj = ProtocolBuffers::decode("Tutorial_Integer32", $bytes);

if ($obj instanceof Tutorial_Integer32) {
    var_dump($obj->getValue());
    if ($obj->getValue() === 0) {
        echo "OK" . PHP_EOL;
    } else {
        var_dump($obj);
    }
} else {
    var_dump($obj);
}

输出结果如下:

object(Tutorial_Integer32)#2 (2) {
  ["_properties":protected]=>
  array(0) {
  }
  ["value":protected]=>
  string(1) "0"
}
NULL
OK
NULL
object(Tutorial_Integer32)#3 (2) {
  ["_properties":protected]=>
  array(0) {
  }
  ["value":protected]=>
  int(0)
}

问题总结:在protocolbuffers::decode时,能够返回被解析的对象,但是对象的属性无法读取。求解中。。。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号