Copied!

Common functions used to work with various clients.

  • internal
Trait
Methods
public addMiddleware(callable $middlewareCallable) : void
 

Add a middleware to the call stack by providing a callable which will be invoked at the start of each call, and will return an instance of {@see MiddlewareInterface} when invoked.

The callable must have the following method signature:

callable(MiddlewareInterface): MiddlewareInterface

An implementation may look something like this:

$client->addMiddleware(function (MiddlewareInterface $handler) {
    return new class ($handler) implements MiddlewareInterface {
        public function __construct(private MiddlewareInterface $handler) {
        }

        public function __invoke(Call $call, array $options) {
            // modify call and options (pre-request)
            $response = ($this->handler)($call, $options);
            // modify the response (post-request)
            return $response;
        }
    };
});
  • param callable $middlewareCallable A callable which returns an instance of {@see \MiddlewareInterface} when invoked with a MiddlewareInterface instance as its first argument.
  • return void
public close()
 

Initiates an orderly shutdown in which preexisting calls continue but new calls are immediately cancelled.

  • experimental
public static traitValidate(array $arr, array $requiredKeys)
 
  • param array $arr Associative array
  • param array $requiredKeys List of keys to check for in $arr
  • return array Returns $arr for fluent use
public static validate(array $arr, array $requiredKeys)
 
  • param array $arr Associative array
  • param array $requiredKeys List of keys to check for in $arr
  • return array Returns $arr for fluent use
public static validateNotNull(array $arr, array $requiredKeys)
 
  • param array $arr Associative array
  • param array $requiredKeys List of keys to check for in $arr
  • return array Returns $arr for fluent use
Methods
protected getCredentialsWrapper()
 

Get the credentials for the client. This method is protected to support use by customized clients.

  • access private
  • return \CredentialsWrapper
protected getTransport()
 

Get the transport for the client. This method is protected to support use by customized clients.

  • access private
  • return \TransportInterface
protected modifyClientOptions(array $options)
 

Modify options passed to the client before calling setClientOptions.

  • param array $options
  • access private
  • internal
protected modifyStreamingCallable(callable $callable)
 

Modify the streaming callable.

  • param callable $callable
  • access private
protected modifyUnaryCallable(callable $callable)
 

Modify the unary callable.

  • param callable $callable
  • access private
Properties
private array $agentHeader = []
private bool $backwardsCompatibilityMode
private ?Google\ApiCore\HeaderCredentialsInterface $credentialsWrapper = NULL
private array $descriptors = []
private static $gapicVersionFromFile = NULL
private array $middlewareCallables = []
 
  • var callable[] $middlewareCallables
private array $retrySettings = []
 
  • var \RetrySettings[] $retrySettings
private string $serviceName = ''
private ?Google\ApiCore\Transport\TransportInterface $transport = NULL
private array $transportCallMethods = ['startUnaryCall', 'startBidiStreamingCall', 'startClientStreamingCall', 'startServerStreamingCall']
Methods
private arrayFilterRemoveNull(array $arr)
 

Just like array_filter(), but preserves falsey values except null.

  • param array $arr
  • return array
private arrayMergeRecursive(array $array1, array $array2)
 

A method, similar to PHP's array_merge_recursive, with two differences.

  1. Keys in $array2 take precedence over keys in $array1.
  2. Non-array keys found in both inputs are not transformed into an array and appended. Rather, the value in $array2 is used.
  • param array $array1
  • param array $array2
  • return array
private buildClientOptions(array $options)
private buildMethod(?string $interfaceName = NULL, ?string $methodName = NULL)
 
  • param string $interfaceName
  • param string $methodName
  • return string
private buildRequestParamsHeader(array $headerParams, ?Google\Protobuf\Internal\Message $request = NULL)
 
  • param array $headerParams
  • param \Message|null $request
  • return array
private configureCallConstructionOptions(string $methodName, array $optionalArgs)
 
  • param string $methodName
  • param array $optionalArgs { Optional arguments
    @type RetrySettings|array $retrySettings [optional] A retry settings
          override for the call.
    
    }
  • return array
private configureCallOptions(array $optionalArgs) : array
 
  • return array
private createCallStack(array $callConstructionOptions)
 
  • param array $callConstructionOptions { Call Construction Options
    @type RetrySettings $retrySettings [optional] A retry settings override
          For the call.
    @type array<string, string> $autoPopulationSettings Settings for
          auto population of particular request fields if unset.
    
    }
  • return callable
private createCredentialsWrapper( $credentials, array $credentialsConfig, string $universeDomain)
 
  • param mixed $credentials
  • param array $credentialsConfig
  • return \CredentialsWrapper
  • throws \ValidationException
private createOperationsClient(array $options)
 
  • param array $options
  • return \OperationsClient
private createTransport(string $apiEndpoint, $transport, $transportConfig, ?callable $clientCertSource = NULL, bool $hasEmulator = false)
 
  • param string $apiEndpoint
  • param string $transport
  • param \TransportOptions|array $transportConfig
  • param callable $clientCertSource
  • param bool $hasEmulator
  • return \TransportInterface
  • throws \ValidationException
private static defaultTransport()
 
  • return string
private static determineMtlsEndpoint(string $apiEndpoint)
private static getClientDefaults()
 

Get default options. This function should be "overridden" by clients using late static binding to provide default options to the client.

  • return array
  • access private
private static getDefaultAudience()
 

The SERVICE_ADDRESS constant is set by GAPIC clients

private static getGapicVersion(array $options)
private static getGrpcDependencyStatus()
 
  • return bool
private getPagedListResponse(string $methodName, array $optionalArgs, string $decodeType, Google\Protobuf\Internal\Message $request, ?string $interfaceName = NULL)
 
  • param string $methodName
  • param array $optionalArgs
  • param string $decodeType
  • param \Message $request
  • param string $interfaceName
  • return \PagedListResponse
private getPagedListResponseAsync(string $methodName, array $optionalArgs, string $decodeType, Google\Protobuf\Internal\Message $request, ?string $interfaceName = NULL)
 
  • param string $methodName
  • param array $optionalArgs
  • param string $decodeType
  • param \Message $request
  • param string $interfaceName
  • return \PromiseInterface
private static initGrpcGcpConfig(string $hostName, string $confPath)
private isAssoc(array $arr)
 

Determine whether given array is associative.

  • param array $arr
  • return bool
private isBackwardsCompatibilityMode() : bool
 
  • internal
private logConfiguration(Psr\Log\LoggerInterface|false|?null $logger, array $options) : void
 
  • param null|false|\LoggerInterface $logger
  • param string $options
private pluck(string $key, array $arr, bool $isRequired = true)
 

Pluck a value out of an array.

  • param string $key
  • param array $arr
  • param bool $isRequired
  • return mixed|null
  • throws \InvalidArgumentException
private pluckArray(array $keys, array $arr)
 

Pluck a subset of an array.

  • param array $keys
  • param array $arr
  • return array
private setClientOptions(array $options)
 

Configures the GAPIC client based on an array of options.

  • param array $options { An array of required and optional arguments.
    @type string $apiEndpoint
          The address of the API remote host, for example "example.googleapis.com. May also
          include the port, for example "example.googleapis.com:443"
    @type bool $disableRetries
          Determines whether or not retries defined by the client configuration should be
          disabled. Defaults to `false`.
    @type string|array $clientConfig
          Client method configuration, including retry settings. This option can be either a
          path to a JSON file, or a PHP array containing the decoded JSON data.
          By default this settings points to the default client config file, which is provided
          in the resources folder.
    @type string|array|FetchAuthTokenInterface|CredentialsWrapper $credentials
          The credentials to be used by the client to authorize API calls. This option
          accepts either a path to a credentials file, or a decoded credentials file as a
          PHP array.
          *Advanced usage*: In addition, this option can also accept a pre-constructed
          \Google\Auth\FetchAuthTokenInterface object or \Google\ApiCore\CredentialsWrapper
          object. Note that when one of these objects are provided, any settings in
          $authConfig will be ignored.
    @type array $credentialsConfig
          Options used to configure credentials, including auth token caching, for the client.
          For a full list of supporting configuration options, see
          \Google\ApiCore\CredentialsWrapper::build.
    @type string|TransportInterface $transport
          The transport used for executing network requests. May be either the string `rest`,
          `grpc`, or 'grpc-fallback'. Defaults to `grpc` if gRPC support is detected on the system.
          *Advanced usage*: Additionally, it is possible to pass in an already instantiated
          TransportInterface object. Note that when this objects is provided, any settings in
          $transportConfig, and any `$apiEndpoint` setting, will be ignored.
    @type array $transportConfig
          Configuration options that will be used to construct the transport. Options for
          each supported transport type should be passed in a key for that transport. For
          example:
          $transportConfig = [
              'grpc' => [...],
              'rest' => [...],
              'grpc-fallback' => [...],
          ];
          See the GrpcTransport::build and RestTransport::build
          methods for the supported options.
    @type string $versionFile
          The path to a file which contains the current version of the client.
    @type string $descriptorsConfigPath
          The path to a descriptor configuration file.
    @type string $serviceName
          The name of the service.
    @type string $libName
          The name of the client application.
    @type string $libVersion
          The version of the client application.
    @type string $gapicVersion
          The code generator version of the GAPIC library.
    @type callable $clientCertSource
          A callable which returns the client cert as a string.
    
    }
  • throws \ValidationException
private shouldUseMtlsEndpoint(array $options)
private startApiCall(string $methodName, ?Google\Protobuf\Internal\Message $request = NULL, array $optionalArgs = [])
 
  • param string $methodName
  • param \Message $request
  • param array $optionalArgs { Call Options
    @type array $headers [optional] key-value array containing headers
    @type int $timeoutMillis [optional] the timeout in milliseconds for the call
    @type array $transportOptions [optional] transport-specific call options
    @type RetrySettings|array $retrySettings [optional] A retry settings
          override for the call.
    
    }
  • experimental
  • return \PromiseInterface|\PagedListResponse|\BidiStream|\ClientStream|\ServerStream
private startAsyncCall(string $methodName, Google\Protobuf\Internal\Message $request, array $optionalArgs = [])
 
  • param string $methodName
  • param \Message $request
  • param array $optionalArgs { Call Options
    @type array $headers                     [optional] key-value array containing headers
    @type int $timeoutMillis                 [optional] the timeout in milliseconds for the call
    @type array $transportOptions            [optional] transport-specific call options
    @type RetrySettings|array $retrySettings [optional] A retry settings override for the call.
    
    }
  • experimental
  • return \PromiseInterface
private startCall(string $methodName, string $decodeType, array $optionalArgs = [], ?Google\Protobuf\Internal\Message $request = NULL, int $callType = 0Google\ApiCore\Call::UNARY_CALL, ?string $interfaceName = NULL)
 
  • param string $methodName
  • param string $decodeType
  • param array $optionalArgs { Call Options
    @type array $headers [optional] key-value array containing headers
    @type int $timeoutMillis [optional] the timeout in milliseconds for the call
    @type array $transportOptions [optional] transport-specific call options
    @type RetrySettings|array $retrySettings [optional] A retry settings
          override for the call.
    
    }
  • param \Message $request
  • param int $callType
  • param string $interfaceName
  • return \PromiseInterface|\BidiStream|\ClientStream|\ServerStream
private startOperationsCall(string $methodName, array $optionalArgs, Google\Protobuf\Internal\Message $request, $client, ?string $interfaceName = NULL, ?string $operationClass = NULL)
 
  • param string $methodName
  • param array $optionalArgs { Call Options
    @type array $headers [optional] key-value array containing headers
    @type int $timeoutMillis [optional] the timeout in milliseconds for the call
    @type array $transportOptions [optional] transport-specific call options
    
    }
  • param \Message $request
  • param \OperationsClient|object $client
  • param string $interfaceName
  • param string $operationClass If provided, will be used instead of the default operation response class of {@see \Google\LongRunning\Operation}.
  • return \PromiseInterface
private subsetArray(array $keys, array $arr)
 

Return a subset of an array, like pluckArray, without modifying the original array.

  • param array $keys
  • param array $arr
  • return array
private static supportedTransports()
 

This defaults to all three transports, which One-Platform supports.

Discovery clients should define this function and only return ['rest'].

private validateCallConfig(string $methodName)
private static validateFileExists(string $filePath)
 
  • param string $filePath
  • throws \ValidationException
private static validateGrpcSupport()
 
  • throws \ValidationException
private static validateImpl( $arr, $requiredKeys, $allowNull)
Properties
private static $gapicVersionFromFile = NULL
Methods
private static defaultTransport()
 
  • return string
private static determineMtlsEndpoint(string $apiEndpoint)
private static getClientDefaults()
 

Get default options. This function should be "overridden" by clients using late static binding to provide default options to the client.

  • return array
  • access private
private static getDefaultAudience()
 

The SERVICE_ADDRESS constant is set by GAPIC clients

private static getGapicVersion(array $options)
private static getGrpcDependencyStatus()
 
  • return bool
private static initGrpcGcpConfig(string $hostName, string $confPath)
private static supportedTransports()
 

This defaults to all three transports, which One-Platform supports.

Discovery clients should define this function and only return ['rest'].

public static traitValidate(array $arr, array $requiredKeys)
 
  • param array $arr Associative array
  • param array $requiredKeys List of keys to check for in $arr
  • return array Returns $arr for fluent use
public static validate(array $arr, array $requiredKeys)
 
  • param array $arr Associative array
  • param array $requiredKeys List of keys to check for in $arr
  • return array Returns $arr for fluent use
private static validateFileExists(string $filePath)
 
  • param string $filePath
  • throws \ValidationException
private static validateGrpcSupport()
 
  • throws \ValidationException
private static validateImpl( $arr, $requiredKeys, $allowNull)
public static validateNotNull(array $arr, array $requiredKeys)
 
  • param array $arr Associative array
  • param array $requiredKeys List of keys to check for in $arr
  • return array Returns $arr for fluent use
© 2025 Bruce Wells
Search Namespaces \ Classes
Configuration