grpc / grpc.github.io

The grpc.io website. (on GitHub pages)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

it's very strange of generate php grpc client code

nevernet opened this issue · comments

current version of protoc-gen-php plugin is only support to generate proto3 file

content of proto file:

syntax = "proto3";

option java_multiple_files = true;
option java_package = "io.grpc.RpcApi";
option java_outer_classname = "RpcApiProto";

package helloworld;

// The service definition.
service Greeter {
  // Validate user's ID
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

generated php file:

<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: helloworld.proto

namespace Helloworld;

use Google\Protobuf\Internal\DescriptorPool;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;

class HelloRequest extends \Google\Protobuf\Internal\Message
{
    private $name = '';

    public function getName()
    {
        return $this->name;
    }

    public function setName($var)
    {
        GPBUtil::checkString($var, True);
        $this->name = $var;
    }

}

class HelloReply extends \Google\Protobuf\Internal\Message
{
    private $message = '';

    public function getMessage()
    {
        return $this->message;
    }

    public function setMessage($var)
    {
        GPBUtil::checkString($var, True);
        $this->message = $var;
    }

}

$pool = DescriptorPool::getGeneratedPool();

$pool->internalAddGeneratedFile(hex2bin(
    "0acf010a1068656c6c6f776f726c642e70726f746f120a68656c6c6f776f" .
    "726c64221c0a0c48656c6c6f52657175657374120c0a046e616d65180120" .
    "012809221d0a0a48656c6c6f5265706c79120f0a076d6573736167651801" .
    "2001280932490a0747726565746572123e0a0853617948656c6c6f12182e" .
    "68656c6c6f776f726c642e48656c6c6f526571756573741a162e68656c6c" .
    "6f776f726c642e48656c6c6f5265706c792200421f0a0e696f2e67727063" .
    "2e527063417069420b52706341706950726f746f5001620670726f746f33"
));

but the origin pb.php file from github repository is:

<?php
// DO NOT EDIT! Generated by Protobuf-PHP protoc plugin 1.0
// Source: helloworld.proto
//   Date: 2015-09-24 20:40:14

namespace helloworld {

  class HelloRequest extends \DrSlump\Protobuf\Message
  {
      /**  @var string */
    public $name = null;

    /** @var \Closure[] */
    protected static $__extensions = array();

      public static function descriptor()
      {
          $descriptor = new \DrSlump\Protobuf\Descriptor(__CLASS__, 'helloworld.HelloRequest');

      // OPTIONAL STRING name = 1
      $f = new \DrSlump\Protobuf\Field();
          $f->number = 1;
          $f->name = 'name';
          $f->type = \DrSlump\Protobuf::TYPE_STRING;
          $f->rule = \DrSlump\Protobuf::RULE_OPTIONAL;
          $descriptor->addField($f);

          foreach (self::$__extensions as $cb) {
              $descriptor->addField($cb(), true);
          }

          return $descriptor;
      }

    /**
     * Check if <name> has a value.
     *
     * @return bool
     */
    public function hasName()
    {
        return $this->_has(1);
    }

    /**
     * Clear <name> value.
     *
     * @return \helloworld\HelloRequest
     */
    public function clearName()
    {
        return $this->_clear(1);
    }

    /**
     * Get <name> value.
     *
     * @return string
     */
    public function getName()
    {
        return $this->_get(1);
    }

    /**
     * Set <name> value.
     *
     * @param string $value
     *
     * @return \helloworld\HelloRequest
     */
    public function setName($value)
    {
        return $this->_set(1, $value);
    }
  }
}

namespace helloworld {

  class HelloReply extends \DrSlump\Protobuf\Message
  {
      /**  @var string */
    public $message = null;

    /** @var \Closure[] */
    protected static $__extensions = array();

      public static function descriptor()
      {
          $descriptor = new \DrSlump\Protobuf\Descriptor(__CLASS__, 'helloworld.HelloReply');

      // OPTIONAL STRING message = 1
      $f = new \DrSlump\Protobuf\Field();
          $f->number = 1;
          $f->name = 'message';
          $f->type = \DrSlump\Protobuf::TYPE_STRING;
          $f->rule = \DrSlump\Protobuf::RULE_OPTIONAL;
          $descriptor->addField($f);

          foreach (self::$__extensions as $cb) {
              $descriptor->addField($cb(), true);
          }

          return $descriptor;
      }

    /**
     * Check if <message> has a value.
     *
     * @return bool
     */
    public function hasMessage()
    {
        return $this->_has(1);
    }

    /**
     * Clear <message> value.
     *
     * @return \helloworld\HelloReply
     */
    public function clearMessage()
    {
        return $this->_clear(1);
    }

    /**
     * Get <message> value.
     *
     * @return string
     */
    public function getMessage()
    {
        return $this->_get(1);
    }

    /**
     * Set <message> value.
     *
     * @param string $value
     *
     * @return \helloworld\HelloReply
     */
    public function setMessage($value)
    {
        return $this->_set(1, $value);
    }
  }
}

namespace helloworld {

  class GreeterClient extends \Grpc\BaseStub
  {
      public function __construct($hostname, $opts)
      {
          parent::__construct($hostname, $opts);
      }
    /**
     * @param helloworld\HelloRequest $input
     */
    public function SayHello(\helloworld\HelloRequest $argument, $metadata = array(), $options = array())
    {
        return $this->_simpleRequest('/helloworld.Greeter/SayHello', $argument, '\helloworld\HelloReply::deserialize', $metadata, $options);
    }
  }
}

where is wrong? please advice.

thank you
Daniel

sorry for wrong issue