Метод php не определен в сгенерированном протобуфом классе

Я пишу клиентское приложение для подключения к песочнице DA. Следующий код:

$grpc_channel = Grpc\ChannelCredentials::createInsecure();
    $client = new Com\Digitalasset\Ledger\Api\V1\LedgerIdentityServiceClient('localhost:7600', [
        'credentials' => $grpc_channel,
    ]);
    $request = new Com\Digitalasset\Ledger\Api\V1\GetLedgerIdentityRequest();
    $ledger_id_response = $client->GetLedgerIdentity($request);
    $ledger_id = $ledger_id_response->getLedgerId();

вызывает следующую ошибку:

PHP Fatal error:  Uncaught Error: Call to undefined method Grpc\UnaryCall::getLedgerId() in /.../damlprojects/loaner_car/php/ledger_client.php:31

Однако это должно быть определено, поскольку $ledger_id_response имеет тип GetLedgerIdentityResponse, у которого есть метод:

public function getLedgerId()
{
    return $this->ledger_id;
}   

Что является причиной ошибки?

2 ответа

Это унарный звонок? Вы еще не получили ответ. Пока что $ledger_id_response является нулевым.

$call = $client->GetLedgerIdentity($request);
list($ledger_id_response, $status) = $call->wait();
if ($status->code == \Grpc\STATUS_OK) {
  $ledger_id = $ledger_id_response->getLedgerId();
}

После тщательного изучения "кода клиента" в примере " Hello World" на веб-сайте grpc

$request = new Helloworld\HelloRequest();
$request->setName($name);
list($reply, $status) = $client->SayHello($request)->wait();

Я осознал свои ошибки.
1. При оформлении запроса на услугу. Это должно быть сделано путем вызова wait() возвращаемого объекта. Следовательно

$client->GetLedgerIdentity($request);

должен быть изменен на

$client->GetLedgerIdentity($request)->wait();

2. Возвращаемое значение приходит в виде массива. Следовательно

$ledger_id_response = must be changed to

list($ledger_id_response, $status) =

как это

list($ledger_id_response, $status) = $client->GetLedgerIdentity($request)->wait();

Теперь можно вызвать getLedgerId

$ledger_id = $ledger_id_response->getLedgerId();

без ошибок!

Другие вопросы по тегам