PHP-Protobuf的问题记录

PHP Fatal error:  Generated message class \0rotobufBenchmarks\-essage\Person hasn't been defined in /pb-performance-comparison/src/GPBMetadata/Person.php on line 29
PHP Stack trace:
PHP   1. {main}() /pb-performance-comparison/vendor/athletic/athletic/bin/athletic:0
PHP   2. Athletic\Athletic->run() /pb-performance-comparison/vendor/athletic/athletic/bin/athletic:19
PHP   3. Athletic\Athletic->benchmark() /pb-performance-comparison/vendor/athletic/athletic/src/Athletic/Athletic.php:38
PHP   4. Athletic\Runners\SuiteRunner->runSuite() /pb-performance-comparison/vendor/athletic/athletic/src/Athletic/Athletic.php:61
PHP   5. Athletic\Runners\SuiteRunner->runClass() /pb-performance-comparison/vendor/athletic/athletic/src/Athletic/Runners/SuiteRunner.php:59
PHP   6. Athletic\Runners\ClassRunner->run() /pb-performance-comparison/vendor/athletic/athletic/src/Athletic/Runners/SuiteRunner.php:74
PHP   7. Athletic\AthleticEvent->run() /pb-performance-comparison/vendor/athletic/athletic/src/Athletic/Runners/ClassRunner.php:58
PHP   8. ProtobufBenchmarks\EncodeEvent->classSetUp() /pb-performance-comparison/vendor/athletic/athletic/src/Athletic/AthleticEvent.php:77
PHP   9. ProtobufBenchmarks\Person->GenerateProto() /pb-performance-comparison/src/ProtobufBenchmarks/EncodeEvent.php:38
PHP  10. ProtobufBenchmarks\Message\Person->__construct() /pb-performance-comparison/src/ProtobufBenchmarks/Person.php:28
PHP  11. GPBMetadata\Person::initOnce() /pb-performance-comparison/src/ProtobufBenchmarks/Message/Person.php:34
PHP  12. Google\Protobuf\Internal\DescriptorPool->internalAddGeneratedFile() /pb-performance-comparison/src/GPBMetadata/Person.php:29
syntax = "proto3";

package ProtobufBenchmarks.Message;

message Person {
  string name = 1;
  int32 id = 2;
  string email = 3;

  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }

  message PhoneNumber {
    string number = 1;
    PhoneType type = 2;
  }

  repeated PhoneNumber phone = 4;
}

解决方法:
https://developers.google.com/protocol-buffers/docs/reference/php-generated#invocation

message TestMessage {
  optional int32 a = 1;
  message NestedMessage {...}
}
// The compiler will generate the following classes:
class TestMessage {
  public a;
}

// PHP doesn’t support nested classes.
class TestMessage_NestedMessage {...}

不要在你的*.proto文件中编写 message的嵌套使用代码。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容