
PHP gRPC 中处理 proto 文件的 Map 类型数据
在使用 gRPC 和 proto 文件时,你可能会遇到 proto 文件中定义的 Map 类型数据在自动生成的 PHP 代码中没有直接对应的问题。 这是因为 PHP 本身并没有直接支持 proto 文件中 Map 的语法结构。
然而,你可以轻松地用 PHP 数组来模拟 Map 类型。PHP 数组本质上就是一个关联数组,键值对的键和值可以是任何类型。
例如,假设你的 proto 文件中定义了以下类型:
立即学习“PHP免费学习笔记(深入)”;
message DemoReply {
map data = 1;
}
message Demo1Request {
string projectId = 1;
map data = 2;
}
在自动生成的 PHP 代码中,你可以将 data 属性当作一个 PHP 数组来处理:
// DemoReply public $data; // PHP 数组,键和值都是 int64 // Demo1Request public $projectId; public $data; // PHP 数组,键是 string,值是 google.protobuf.Any 对象
通过这种方式,你可以使用标准的 PHP 数组操作方法(例如 [] 访问元素,array_keys(),array_values() 等)来访问和操作 data 中的键值对。 记住,你需要根据你的 proto 文件中定义的键和值的类型来正确处理数组中的数据。
记住,google.protobuf.Any 需要使用相应的 unpack() 方法进行解包,才能访问其内部数据。











