php protobuf3 与 protobuf2的不兼容性的问题处理
protobuf3 吧所有的默认值都忽略了,但是在有些业务场景上这些字段是需要的 否则会导致加密值不一样
vendor/google/protobuf/src/google/protobuf/internal/messsage.php
private function existField($field)
{
$oneof_index = $field->getOneofIndex();
if ($oneof_index !== -1) {
$oneof = $this->desc->getOneofDecl()[$oneof_index];
$oneof_name = $oneof->getName();
return $this->$oneof_name->getNumber() === $field->getNumber();
}
$getter = $field->getGetter();
$values = $this->$getter();
if ($field->isMap()) {
return count($values) !== 0;
} elseif ($field->isRepeated()) {
return count($values) !== 0;
} else {
// 这里修改一下即可
return true;
// return $values !== $this->defaultValue($field);
}
}