ruoge3s / protobuf-message-helper
ide helper for google protobuf message
Installs: 3 243
Dependents: 2
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: >=7.0
README
相关PHP扩展
安装使用(仅在开发环境中使用即可)
composer require ruoge3s/protobuf-message-helper --dev
消息转换
const PROTOBUF_TYPES = [1, 2, 3, 4, 5, 6, 7, 8]; /** * 把protobuf消息对象转换为数组进行存储 * @param ProtobufMessage $message * @return array */ function message2array(\ProtobufMessage $message) { $data = []; foreach ($message->fields() as $f) { $name = preg_replace_callback('/([-_]+([a-z]{1}))/i', function($matches){ return strtoupper($matches[2]); },'get_' . $f['name']); $value = $message->$name(); if (in_array($f['type'], PROTOBUF_TYPES)) { $data[$f['name']] = $value; } else { if (is_array($value)) { foreach ($value as $son) { $data[$f['name']][] = $this->message2array($son); } } else { $data[$f['name']] = $value ? $this->message2array($value) : null; } } } return $data; }