Google Cloud PHP Client
Idiomatic PHP client for Google Cloud Platform services.
This client supports the following Google Cloud Platform services at a General Availability quality level:
- Cloud Spanner (GA)
- Google BigQuery (GA)
- Google Cloud Datastore (GA)
- Google Cloud Pub/Sub (GA)
- Google Cloud Storage (GA)
- Google Cloud Translation (GA)
- Google Cloud Video Intelligence (GA)
- Google Stackdriver Logging (GA)
This client supports the following Google Cloud Platform services at a Beta quality level:
- Cloud Firestore (Beta)
- Google Cloud Asset (Beta)
- Google Cloud Container (Beta)
- Google Cloud Dataproc (Beta)
- Google Cloud KMS (Beta)
- Google Cloud Natural Language (Beta)
- Google Cloud OsLogin (Beta)
- Google Cloud Tasks (Beta)
- Google Cloud Text-to-Speech (Beta)
- Google Cloud Vision (Beta)
- Google DLP (Beta)
- Google Stackdriver Error Reporting (Beta)
- Google Stackdriver Monitoring (Beta)
This client supports the following Google Cloud Platform services at an Alpha quality level:
- Dialogflow API (Alpha)
- Google Bigtable (Alpha)
- Google Cloud BigQuery Data Transfer (Alpha)
- Google Cloud IoT (Alpha)
- Google Cloud Redis (Alpha)
- Google Cloud Speech (Alpha)
- Google Stackdriver Debugger (Alpha)
- Google Stackdriver Trace (Alpha)
If you need support for other Google APIs, please check out the Google APIs Client Library for PHP.
Quick Start
We recommend installing individual component packages when possible. A list of available packages can be found on Packagist.
For example:
$ composer require google/cloud-bigquery
$ composer require google/cloud-datastore
We also provide the google/cloud
package, which includes all Google Cloud clients.
$ composer require google/cloud
Authentication
Authentication is handled by the client library automatically. You just need to provide the authentication details when creating a client. Generally, authentication is accomplished using a Service Account. For more information on obtaining Service Account credentials, see our Authentication Guide.
Once you've obtained your credentials file, it may be used to create an authenticated client.
require 'vendor/autoload.php';
use Google\Cloud\Core\ServiceBuilder;
// Authenticate using a keyfile path
$cloud = new ServiceBuilder([
'keyFilePath' => 'path/to/keyfile.json'
]);
// Authenticate using keyfile data
$cloud = new ServiceBuilder([
'keyFile' => json_decode(file_get_contents('/path/to/keyfile.json'), true)
]);
If you do not wish to embed your authentication information in your application code, you may also make use of Application Default Credentials.
require 'vendor/autoload.php';
use Google\Cloud\Core\ServiceBuilder;
putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/keyfile.json');
$cloud = new ServiceBuilder();
The GOOGLE_APPLICATION_CREDENTIALS
environment variable may be set in your server configuration.
gRPC and Protobuf
Many clients in Google Cloud PHP offer support for gRPC, either as an option or a requirement. gRPC is a high-performance RPC framework created by Google. To use gRPC in PHP, you must install the gRPC PHP extension on your server. While not required, it is also recommended that you install the protobuf extension whenever using gRPC in production.
$ pecl install grpc
$ pecl install protobuf
Cloud Spanner (GA)
Preview
require 'vendor/autoload.php';
use Google\Cloud\Spanner\SpannerClient;
$spanner = new SpannerClient();
$db = $spanner->connect('my-instance', 'my-database');
$userQuery = $db->execute('SELECT * FROM Users WHERE id = @id', [
'parameters' => [
'id' => $userId
]
]);
$user = $userQuery->rows()->current();
echo 'Hello ' . $user['firstName'];
google/cloud-spanner
Cloud Spanner can be installed separately by requiring the google/cloud-spanner
composer package:
$ composer require google/cloud-spanner
Google BigQuery (GA)
Preview
require 'vendor/autoload.php';
use Google\Cloud\BigQuery\BigQueryClient;
$bigQuery = new BigQueryClient();
// Get an instance of a previously created table.
$dataset = $bigQuery->dataset('my_dataset');
$table = $dataset->table('my_table');
// Begin a job to import data from a CSV file into the table.
$loadJobConfig = $table->load(
fopen('/data/my_data.csv', 'r')
);
$job = $table->runJob($loadJobConfig);
// Run a query and inspect the results.
$queryJobConfig = 'SELECT * FROM [my_project:my_dataset.my_table]';
$queryResults = $bigQuery->runQuery($queryConfig);
foreach ($queryResults as $row) {
print_r($row);
}
google/cloud-bigquery
Google BigQuery can be installed separately by requiring the google/cloud-bigquery
composer package:
$ composer require google/cloud-bigquery
Google Cloud Datastore (GA)
Preview
require 'vendor/autoload.php';
use Google\Cloud\Datastore\DatastoreClient;
$datastore = new DatastoreClient();
// Create an entity
$bob = $datastore->entity('Person');
$bob['firstName'] = 'Bob';
$bob['email'] = 'bob@example.com';
$datastore->insert($bob);
// Update the entity
$bob['email'] = 'bobV2@example.com';
$datastore->update($bob);
// If you know the ID of the entity, you can look it up
$key = $datastore->key('Person', '12345328897844');
$entity = $datastore->lookup($key);
google/cloud-datastore
Google Cloud Datastore can be installed separately by requiring the google/cloud-datastore
composer package:
$ composer require google/cloud-datastore
Google Cloud Pub/Sub (GA)
Preview
require 'vendor/autoload.php';
use Google\Cloud\PubSub\PubSubClient;
$pubSub = new PubSubClient();
// Get an instance of a previously created topic.
$topic = $pubSub->topic('my_topic');
// Publish a message to the topic.
$topic->publish([
'data' => 'My new message.',
'attributes' => [
'location' => 'Detroit'
]
]);
// Get an instance of a previously created subscription.
$subscription = $pubSub->subscription('my_subscription');
// Pull all available messages.
$messages = $subscription->pull();
foreach ($messages as $message) {
echo $message->data() . "\n";
echo $message->attribute('location');
}
google/cloud-pubsub
Google Cloud Pub/Sub can be installed separately by requiring the google/cloud-pubsub
composer package:
$ composer require google/cloud-pubsub
Google Cloud Storage (GA)
Preview
require 'vendor/autoload.php';
use Google\Cloud\Storage\StorageClient;
$storage = new StorageClient();
$bucket = $storage->bucket('my_bucket');
// Upload a file to the bucket.
$bucket->upload(
fopen('/data/file.txt', 'r')
);
// Using Predefined ACLs to manage object permissions, you may
// upload a file and give read access to anyone with the URL.
$bucket->upload(
fopen('/data/file.txt', 'r'),
[
'predefinedAcl' => 'publicRead'
]
);
// Download and store an object from the bucket locally.
$object = $bucket->object('file_backup.txt');
$object->downloadToFile('/data/file_backup.txt');
Stream Wrapper
require 'vendor/autoload.php';
use Google\Cloud\Storage\StorageClient;
$storage = new StorageClient();
$storage->registerStreamWrapper();
$contents = file_get_contents('gs://my_bucket/file_backup.txt');
google/cloud-storage
Google Cloud Storage can be installed separately by requiring the google/cloud-storage
composer package:
$ composer require google/cloud-storage
Google Cloud Translation (GA)
Preview
require 'vendor/autoload.php';
use Google\Cloud\Translate\TranslateClient;
$translate = new TranslateClient([
'key' => 'your_key'
]);
// Translate text from english to french.
$result = $translate->translate('Hello world!', [
'target' => 'fr'
]);
echo $result['text'] . "\n";
// Detect the language of a string.
$result = $translate->detectLanguage('Greetings from Michigan!');
echo $result['languageCode'] . "\n";
// Get the languages supported for translation specifically for your target language.
$languages = $translate->localizedLanguages([
'target' => 'en'
]);
foreach ($languages as $language) {
echo $language['name'] . "\n";
echo $language['code'] . "\n";
}
// Get all languages supported for translation.
$languages = $translate->languages();
foreach ($languages as $language) {
echo $language . "\n";
}
google/cloud-translate
Google Cloud Translation can be installed separately by requiring the google/cloud-translate
composer package:
$ composer require google/cloud-translate
Google Cloud Video Intelligence (GA)
Preview
require __DIR__ . '/vendor/autoload.php';
use Google\Cloud\VideoIntelligence\V1\VideoIntelligenceServiceClient;
use Google\Cloud\VideoIntelligence\V1\Feature;
$videoIntelligenceServiceClient = new VideoIntelligenceServiceClient();
$inputUri = "gs://example-bucket/example-video.mp4";
$features = [
Feature::LABEL_DETECTION,
];
$operationResponse = $videoIntelligenceServiceClient->annotateVideo([
'inputUri' => $inputUri,
'features' => $features
]);
$operationResponse->pollUntilComplete();
if ($operationResponse->operationSucceeded()) {
$results = $operationResponse->getResult();
foreach ($results->getAnnotationResults() as $result) {
echo 'Segment labels' . PHP_EOL;
foreach ($result->getSegmentLabelAnnotations() as $labelAnnotation) {
echo "Label: " . $labelAnnotation->getEntity()->getDescription()
. PHP_EOL;
}
echo 'Shot labels' . PHP_EOL;
foreach ($result->getShotLabelAnnotations() as $labelAnnotation) {
echo "Label: " . $labelAnnotation->getEntity()->getDescription()
. PHP_EOL;
}
echo 'Frame labels' . PHP_EOL;
foreach ($result->getFrameLabelAnnotations() as $labelAnnotation) {
echo "Label: " . $labelAnnotation->getEntity()->getDescription()
. PHP_EOL;
}
}
} else {
$error = $operationResponse->getError();
echo "error: " . $error->getMessage() . PHP_EOL;
}
google/cloud-videointelligence
Cloud Video Intelligence can be installed separately by requiring the google/cloud-videointelligence
composer package:
$ composer require google/cloud-videointelligence
Google Stackdriver Logging (GA)
Preview
require 'vendor/autoload.php';
use Google\Cloud\Logging\LoggingClient;
$logging = new LoggingClient();
// Get a logger instance.
$logger = $logging->logger('my_log');
// Write a log entry.
$logger->write('my message');
// List log entries from a specific log.
$entries = $logging->entries([
'filter' => 'logName = projects/my_project/logs/my_log'
]);
foreach ($entries as $entry) {
echo $entry->info()['textPayload'] . "\n";
}
google/cloud-logging
Google Stackdriver Logging can be installed separately by requiring the google/cloud-logging
composer package:
$ composer require google/cloud-logging
Cloud Firestore (Beta)
Preview
require 'vendor/autoload.php';
use Google\Cloud\Firestore\FirestoreClient;
$firestore = new FirestoreClient();
$collectionReference = $firestore->collection('Users');
$documentReference = $collectionReference->document($userId);
$snapshot = $documentReference->snapshot();
echo "Hello " . $snapshot['firstName'];
google/cloud-firestore
Cloud Firestore can be installed separately by requiring the google/cloud-firestore
composer package:
$ composer require google/cloud-firestore
Google Cloud Asset (Beta)
Preview
require_once __DIR__ . '/vendor/autoload.php';
use Google\Cloud\Asset\V1beta1\AssetServiceClient;
use Google\Cloud\Asset\V1beta1\GcsDestination;
use Google\Cloud\Asset\V1beta1\OutputConfig;
$objectPath = 'gs://your-bucket/cai-export';
// Now you need to change this with your project number (numeric id)
$project = 'example-project';
$client = new AssetServiceClient();
$gcsDestination = new GcsDestination(['uri' => $objectPath]);
$outputConfig = new OutputConfig(['gcs_destination' => $gcsDestination]);
$resp = $client->exportAssets("projects/$project", $outputConfig);
$resp->pollUntilComplete();
if ($resp->operationSucceeded()) {
echo "The result is dumped to $objectPath successfully." . PHP_EOL;
} else {
$error = $operationResponse->getError();
// handleError($error)
}
google/cloud-asset
Cloud Asset Inventory can be installed separately by requiring the google/cloud-asset
composer package:
$ composer require google/cloud-asset
Google Cloud Container (Beta)
require 'vendor/autoload.php';
use Google\Cloud\Container\V1\ClusterManagerClient;
$clusterManagerClient = new ClusterManagerClient();
$projectId = '[MY-PROJECT-ID]';
$zone = 'us-central1-a';
try {
$clusters = $clusterManagerClient->listClusters($projectId, $zone);
foreach ($clusters->getClusters() as $cluster) {
print('Cluster: ' . $cluster->getName() . PHP_EOL);
}
} finally {
$clusterManagerClient->close();
}
google/cloud-container
Google Cloud Container can be installed separately by requiring the google/cloud-container
composer package:
$ composer require google/cloud-container
Google Cloud Dataproc (Beta)
require 'vendor/autoload.php';
use Google\Cloud\Dataproc\V1\JobControllerClient;
use Google\Cloud\Dataproc\V1\Job;
use Google\Cloud\Dataproc\V1\HadoopJob;
use Google\Cloud\Dataproc\V1\JobPlacement;
$projectId = '[MY_PROJECT_ID]';
$region = 'global';
$clusterName = '[MY_CLUSTER]';
$jobPlacement = new JobPlacement();
$jobPlacement->setClusterName($clusterName);
$hadoopJob = new HadoopJob();
$hadoopJob->setMainJarFileUri('gs://my-bucket/my-hadoop-job.jar');
$job = new Job();
$job->setPlacement($jobPlacement);
$job->setHadoopJob($hadoopJob);
$jobControllerClient = new JobControllerClient();
$submittedJob = $jobControllerClient->submitJob($projectId, $region, $job);
google/cloud-dataproc
Google Cloud Dataproc can be installed separately by requiring the google/cloud-dataproc
composer package:
$ composer require google/cloud-dataproc
Google Cloud KMS (Beta)
require __DIR__ . '/vendor/autoload.php';
use Google\ApiCore\ApiException;
use Google\Cloud\Kms\V1\CryptoKey;
use Google\Cloud\Kms\V1\CryptoKey\CryptoKeyPurpose;
use Google\Cloud\Kms\V1\KeyManagementServiceClient;
use Google\Cloud\Kms\V1\KeyRing;
$client = new KeyManagementServiceClient();
$projectId = 'example-project';
$location = 'global';
// Create a keyring
$keyRingId = 'example-keyring';
$locationName = $client::locationName($projectId, $location);
$keyRingName = $client::keyRingName($projectId, $location, $keyRingId);
try {
$keyRing = $client->getKeyRing($keyRingName);
} catch (ApiException $e) {
if ($e->getStatus() === 'NOT_FOUND') {
$keyRing = new KeyRing();
$keyRing->setName($keyRingName);
$client->createKeyRing($locationName, $keyRingId, $keyRing);
}
}
// Create a cryptokey
$keyId = 'example-key';
$keyName = $client::cryptoKeyName($projectId, $location, $keyRingId, $keyId);
try {
$cryptoKey = $client->getCryptoKey($keyName);
} catch (ApiException $e) {
if ($e->getStatus() === 'NOT_FOUND') {
$cryptoKey = new CryptoKey();
$cryptoKey->setPurpose(CryptoKeyPurpose::ENCRYPT_DECRYPT);
$cryptoKey = $client->createCryptoKey($keyRingName, $keyId, $cryptoKey);
}
}
// Encrypt and decrypt
$secret = 'My secret text';
$response = $client->encrypt($keyName, $secret);
$cipherText = $response->getCiphertext();
$response = $client->decrypt($keyName, $cipherText);
$plainText = $response->getPlaintext();
assert($secret === $plainText);
google/cloud-kms
Google Cloud KMS can be installed separately by requiring the google/cloud-kms
composer package:
$ composer require google/cloud-kms
Google Cloud Natural Language (Beta)
Preview
require 'vendor/autoload.php';
use Google\Cloud\Language\LanguageClient;
$language = new LanguageClient();
// Analyze a sentence.
$annotation = $language->annotateText('Greetings from Michigan!');
// Check the sentiment.
if ($annotation->sentiment() > 0) {
echo "This is a positive message.\n";
}
// Detect entities.
$entities = $annotation->entitiesByType('LOCATION');
foreach ($entities as $entity) {
echo $entity['name'] . "\n";
}
// Parse the syntax.
$tokens = $annotation->tokensByTag('NOUN');
foreach ($tokens as $token) {
echo $token['text']['content'] . "\n";
}
google/cloud-language
Google Cloud Natural Language can be installed separately by requiring the google/cloud-language
composer package:
$ composer require google/cloud-language
Google Cloud OsLogin (Beta)
require 'vendor/autoload.php';
use Google\Cloud\OsLogin\V1\OsLoginServiceClient;
$osLoginServiceClient = new OsLoginServiceClient();
$userId = '[MY_USER_ID]';
$formattedName = $osLoginServiceClient->userName($userId);
$loginProfile = $osLoginServiceClient->getLoginProfile($formattedName);
google/cloud-oslogin
Google Cloud OsLogin can be installed separately by requiring the google/cloud-oslogin
composer package:
$ composer require google/cloud-oslogin
Google Cloud Tasks (Beta)
Preview
require_once __DIR__ . '/vendor/autoload.php';
use Google\Cloud\Tasks\V2beta3\AppEngineHttpQueue;
use Google\Cloud\Tasks\V2beta3\CloudTasksClient;
use Google\Cloud\Tasks\V2beta3\Queue;
$client = new CloudTasksClient();
$project = 'example-project';
$location = 'us-central1';
$queue = uniqid('example-queue-');
$queueName = $client::queueName($project, $location, $queue);
// Create an App Engine queue
$locationName = $client::locationName($project, $location);
$queue = new Queue([
'name' => $queueName,
'app_engine_http_queue' => new AppEngineHttpQueue()
]);
$queue->setName($queueName);
$client->createQueue($locationName, $queue);
echo "$queueName created." . PHP_EOL;
// List queues
echo 'Listing the queues' . PHP_EOL;
$resp = $client->listQueues($locationName);
foreach ($resp->iterateAllElements() as $q) {
echo $q->getName() . PHP_EOL;
}
// Delete the queue
$client->deleteQueue($queueName);
Removal of pull queue
The past version (V2beta2) supported pull queues, but we removed the pull queue support from V2beta3. For more details, read our documentation about the removal.
google/cloud-tasks
Google Cloud Tasks can be installed separately by requiring the google/cloud-tasks
composer package:
$ composer require google/cloud-tasks
Google Cloud Text-to-Speech (Beta)
require __DIR__ . '/vendor/autoload.php';
use Google\Cloud\TextToSpeech\V1\AudioConfig;
use Google\Cloud\TextToSpeech\V1\AudioEncoding;
use Google\Cloud\TextToSpeech\V1\SynthesisInput;
use Google\Cloud\TextToSpeech\V1\TextToSpeechClient;
use Google\Cloud\TextToSpeech\V1\VoiceSelectionParams;
$textToSpeechClient = new TextToSpeechClient();
$input = new SynthesisInput();
$input->setText('Japan\'s national soccer team won against Colombia!');
$voice = new VoiceSelectionParams();
$voice->setLanguageCode('en-US');
$audioConfig = new AudioConfig();
$audioConfig->setAudioEncoding(AudioEncoding::MP3);
$resp = $textToSpeechClient->synthesizeSpeech($input, $voice, $audioConfig);
file_put_contents('test.mp3', $resp->getAudioContent());
google/cloud-text-to-speech
Google Cloud Text-to-Speech can be installed separately by requiring the google/cloud-text-to-speech
composer package:
$ composer require google/cloud-text-to-speech
Google Cloud Vision (Beta)
Preview
require 'vendor/autoload.php';
use Google\Cloud\Vision\VisionClient;
$vision = new VisionClient();
// Annotate an image, detecting faces.
$image = $vision->image(
fopen('/data/family_photo.jpg', 'r'),
['faces']
);
$annotation = $vision->annotate($image);
// Determine if the detected faces have headwear.
foreach ($annotation->faces() as $key => $face) {
if ($face->hasHeadwear()) {
echo "Face $key has headwear.\n";
}
}
google/cloud-vision
Google Cloud Vision can be installed separately by requiring the google/cloud-vision
composer package:
$ composer require google/cloud-vision
Google DLP (Beta)
Preview
require 'vendor/autoload.php';
use Google\Cloud\Dlp\V2\DlpServiceClient;
use Google\Cloud\Dlp\V2\ContentItem;
use Google\Cloud\Dlp\V2\InfoType;
use Google\Cloud\Dlp\V2\InspectConfig;
$dlpServiceClient = new DlpServiceClient();
$infoTypesElement = (new InfoType())
->setName('EMAIL_ADDRESS');
$inspectConfig = (new InspectConfig())
->setInfoTypes([$infoTypesElement]);
$item = (new ContentItem())
->setValue('My email is example@example.com.');
$formattedParent = $dlpServiceClient
->projectName('[PROJECT_ID]');
$response = $dlpServiceClient->inspectContent($formattedParent, [
'inspectConfig' => $inspectConfig,
'item' => $item
]);
$findings = $response->getResult()
->getFindings();
foreach ($findings as $finding) {
print $finding->getInfoType()
->getName() . PHP_EOL;
}
google/cloud-dlp
Google DLP can be installed separately by requiring the google/cloud-dlp
composer package:
$ composer require google/cloud-dlp
Google Stackdriver Error Reporting (Beta)
Preview
require 'vendor/autoload.php';
use Google\Cloud\ErrorReporting\V1beta1\ReportErrorsServiceClient;
use Google\Cloud\ErrorReporting\V1beta1\ReportedErrorEvent;
$reportErrorsServiceClient = new ReportErrorsServiceClient();
$formattedProjectName = $reportErrorsServiceClient->projectName('[PROJECT]');
$event = new ReportedErrorEvent();
try {
$response = $reportErrorsServiceClient->reportErrorEvent($formattedProjectName, $event);
} finally {
$reportErrorsServiceClient->close();
}
google/cloud-error-reporting
Google Stackdriver Error Reporting can be installed separately by requiring the google/cloud-errorreporting
composer package:
$ composer require google/cloud-error-reporting
Google Stackdriver Monitoring (Beta)
Preview
require 'vendor/autoload.php';
use Google\Api\Metric;
use Google\Api\MonitoredResource;
use Google\Cloud\Monitoring\V3\MetricServiceClient;
use Google\Cloud\Monitoring\V3\Point;
use Google\Cloud\Monitoring\V3\TimeInterval;
use Google\Cloud\Monitoring\V3\TimeSeries;
use Google\Cloud\Monitoring\V3\TypedValue;
use Google\Protobuf\Timestamp;
$metricServiceClient = new MetricServiceClient();
$formattedProjectName = $metricServiceClient->projectName($projectId);
$labels = [
'instance_id' => $instanceId,
'zone' => $zone,
];
$m = new Metric();
$m->setType('custom.googleapis.com/my_metric');
$r = new MonitoredResource();
$r->setType('gce_instance');
$r->setLabels($labels);
$value = new TypedValue();
$value->setDoubleValue(3.14);
$timestamp = new Timestamp();
$timestamp->setSeconds(time());
$interval = new TimeInterval();
$interval->setStartTime($timestamp);
$interval->setEndTime($timestamp);
$point = new Point();
$point->setValue($value);
$point->setInterval($interval);
$points = [$point];
$timeSeries = new TimeSeries();
$timeSeries->setMetric($m);
$timeSeries->setResource($r);
$timeSeries->setPoints($points);
try {
$metricServiceClient->createTimeSeries($formattedProjectName, [$timeSeries]);
print('Successfully submitted a time series' . PHP_EOL);
} finally {
$metricServiceClient->close();
}
google/cloud-monitoring
Google Stackdriver Monitoring can be installed separately by requiring the google/cloud-monitoring
composer package:
$ composer require google/cloud-monitoring
Dialogflow API (Alpha)
Preview
require 'vendor/autoload.php';
use Google\Cloud\Dialogflow\V2\EntityTypesClient;
$entityTypesClient = new EntityTypesClient();
$projectId = '[MY_PROJECT_ID]';
$entityTypeId = '[ENTITY_TYPE_ID]';
$formattedEntityTypeName = $entityTypesClient->entityTypeName($projectId, $entityTypeId);
$entityType = $entityTypesClient->getEntityType($formattedEntityTypeName);
foreach ($entityType->getEntities() as $entity) {
print(PHP_EOL);
printf('Entity value: %s' . PHP_EOL, $entity->getValue());
print('Synonyms: ');
foreach ($entity->getSynonyms() as $synonym) {
print($synonym . "\t");
}
print(PHP_EOL);
}
google/cloud-dialogflow
Dialogflow can be installed separately by requiring the google/cloud-dialogflow
composer package:
$ composer require google/cloud-dialogflow
Google Bigtable (Alpha)
Preview
require 'vendor/autoload.php';
use Google\Cloud\Bigtable\V2\BigtableClient;
$bigtableClient = new BigtableClient();
$formattedTableName = $bigtableClient->tableName('[PROJECT]', '[INSTANCE]', '[TABLE]');
try {
$stream = $bigtableClient->readRows($formattedTableName);
foreach ($stream->readAll() as $element) {
// doSomethingWith($element);
}
} finally {
$bigtableClient->close();
}
google/cloud-bigtable
Google Bigtable can be installed separately by requiring the google/cloud-bigtable
composer package:
$ composer require google/cloud-bigtable
Google Cloud BigQuery Data Transfer (Alpha)
Preview
require 'vendor/autoload.php';
use Google\Cloud\BigQuery\DataTransfer\V1\DataTransferServiceClient;
$dataTransferServiceClient = new DataTransferServiceClient();
$projectId = '[MY_PROJECT_ID]';
$location = 'us-central1';
$formattedLocation = $dataTransferServiceClient->locationName($projectId, $location);
$dataSources = $dataTransferServiceClient->listDataSources($formattedLocation);
google/cloud-bigquerydatatransfer
Google Cloud BigQuery Data Transfer can be installed separately by requiring the google/cloud-bigquerydatatransfer
composer package:
$ composer require google/cloud-bigquerydatatransfer
Google Cloud IoT (Alpha)
Preview
require 'vendor/autoload.php';
use Google\Cloud\Iot\V1\DeviceManagerClient;
$deviceManager = new DeviceManagerClient();
$projectId = '[MY_PROJECT_ID]';
$location = 'us-central1';
$registryId = '[MY_REGISTRY_ID]';
$registryName = $deviceManager->registryName($projectId, $location, $registryId);
$devices = $deviceManager->listDevices($registryName);
foreach ($devices->iterateAllElements() as $device) {
printf('Device: %s : %s' . PHP_EOL,
$device->getNumId(),
$device->getId()
);
}
google/cloud-iot
Google Cloud IoT can be installed separately by requiring the google/cloud-iot
composer package:
$ composer require google/cloud-iot
Google Cloud Redis (Alpha)
Preview
require 'vendor/autoload.php';
use Google\Cloud\Redis\V1\CloudRedisClient;
$client = new CloudRedisClient();
$projectId = '[MY_PROJECT_ID]';
$location = '-'; // The '-' wildcard refers to all regions available to the project for the listInstances method
$formattedLocationName = $client->locationName($projectId, $location);
$response = $client->listInstances($formattedLocationName);
foreach ($response->iterateAllElements() as $instance) {
printf('Instance: %s : %s' . PHP_EOL,
$device->getDisplayName(),
$device->getName()
);
}
google/cloud-redis
Google Cloud Redis can be installed separately by requiring the google/cloud-redis
composer package:
$ composer require google/cloud-redis
Google Cloud Speech (Alpha)
Preview
require 'vendor/autoload.php';
use Google\Cloud\Speech\SpeechClient;
$speech = new SpeechClient([
'languageCode' => 'en-US'
]);
// Recognize the speech in an audio file.
$results = $speech->recognize(
fopen(__DIR__ . '/audio_sample.flac', 'r')
);
foreach ($results as $result) {
echo $result->topAlternative()['transcript'] . "\n";
}
google/cloud-speech
Google Cloud Speech can be installed separately by requiring the google/cloud-speech
composer package:
$ composer require google/cloud-speech
Google Stackdriver Debugger (Alpha)
Preview
use Google\Cloud\Debugger\DebuggerClient;
$debugger = new DebuggerClient();
$debuggee = $debugger->debugee();
$debuggee->register();
google/cloud-debugger
Stackdriver Debugger can be installed separately by requiring the google/cloud-debugger
composer package:
$ composer require google/cloud-debugger
Google Stackdriver Trace (Alpha)
Preview
require 'vendor/autoload.php';
use Google\Cloud\Trace\TraceClient;
$traceClient = new TraceClient();
// Create a Trace
$trace = $traceClient->trace();
$span = $trace->span([
'name' => 'main'
]);
$span->setStart();
$span->setEnd();
$trace->setSpans([$span]);
$traceClient->insert($trace);
// List recent Traces
foreach($traceClient->traces() as $trace) {
var_dump($trace->traceId());
}
google/cloud-trace
Stackdriver Trace can be installed separately by requiring the google/cloud-trace
composer package:
$ composer require google/cloud-trace
Caching Access Tokens
By default the library will use a simple in-memory caching implementation, however it is possible to override this behavior by passing a PSR-6 caching implementation in to the desired client.
The following example takes advantage of Symfony's Cache Component.
require 'vendor/autoload.php';
use Google\Cloud\Storage\StorageClient;
use Symfony\Component\Cache\Adapter\ArrayAdapter;
// Please take the proper precautions when storing your access tokens in a cache no matter the implementation.
$cache = new ArrayAdapter();
$storage = new StorageClient([
'authCache' => $cache
]);
This library provides a PSR-6 implementation with the SystemV shared memory at Google\Auth\Cache\SysVCacheItemPool
. This implementation is only available on *nix machines, but it's the one of the fastest implementations and you can share the cache among multiple processes. The following example shows how to use it.
require __DIR__ . '/vendor/autoload.php';
use Google\Cloud\Spanner\SpannerClient;
use Google\Auth\Cache\SysVCacheItemPool;
$cache = new SysVCacheItemPool();
$spanner = new SpannerClient([
'authCache' => $cache
]);
Versioning
This library follows Semantic Versioning.
Please note it is currently under active development. Any release versioned 0.x.y is subject to backwards incompatible changes at any time.
GA: Libraries defined at a GA quality level are stable, and will not introduce backwards-incompatible changes in any minor or patch releases. We will address issues and requests with the highest priority. Please note, for any components which include generated clients the GA guarantee will only apply to clients which interact with stable services. For example, in a component which hosts V1 and V1beta1 generated clients, the GA guarantee will only apply to the V1 client as the service it interacts with is considered stable.
Beta: Libraries defined at a Beta quality level are expected to be mostly stable and we're working towards their release candidate. We will address issues and requests with a higher priority.
Alpha: Libraries defined at an Alpha quality level are still a work-in-progress and are more likely to get backwards-incompatible updates.
Contributing
Contributions to this library are always welcome and highly encouraged.
See CONTRIBUTING for more information on how to get started.
License
Apache 2.0 - See LICENSE for more information.