handler = $handler; * } * public function __invoke(Call $call, array $options) * { * echo "Logging info about the call: " . $call->getMethod(); * return ($this->handler)($call, $options); * } * } * ``` * * Next, add the middleware to any class implementing `GapicClientTrait` by passing in a * callable which returns the new middleware: * * ``` * $client = new ExampleGoogleApiServiceClient(); * $client->addMiddleware(function (MiddlewareInterface $handler) { * return new MyTestMiddleware($handler); * }); * ``` */ interface MiddlewareInterface { /** * Modify or observe the API call request and response. * The returned value must include the result of the next MiddlewareInterface invocation in the * chain. * * @param Call $call * @param array $options * @return PromiseInterface|ClientStream|ServerStream|BidiStream */ public function __invoke(Call $call, array $options); }