我正在为我的网络应用程序使用 Google 应用引擎,并且我需要使用 NoSQL 数据库,所以我最好的选择是 Google Cloud Datastore
由于我找不到将它与php连接的方法,我无法使用它。在官方文档 中没有提到php 。我想确定有没有办法用php访问它?
我正在为我的网络应用程序使用 Google 应用引擎,并且我需要使用 NoSQL 数据库,所以我最好的选择是 Google Cloud Datastore
由于我找不到将它与php连接的方法,我无法使用它。在官方文档 中没有提到php 。我想确定有没有办法用php访问它?
没有记录从 PHP 访问 Google Cloud Datastore,但您应该能够像使用任何其他 Google API 一样使用适用于 PHP 的 Google API 客户端库。
php 访问数据存储的良好入门入门
首先,使用Composer(依赖管理器)安装官方的 Google Cloud Datastore PHP API 。您可以通过添加"google/cloud-datastore": "^1.0"
到 composer.json 的“require”部分并运行来做到这一点composer update
您可以使用以下命令启动本地 Datastore 模拟器:
gcloud beta emulators datastore start
这是我编写的一个帮助程序类,用于处理连接到数据存储区:
<?php
// Datastore.php
use Google\Cloud\Datastore\DatastoreClient;
class Datastore {
private static $ds;
/**
* Creates or returns the Datastore instance
*
* @return void
*/
public static function getOrCreate() {
if (isset(Datastore::$ds)) return Datastore::$ds;
// gcloud beta emulators datastore start --data-dir=_datastore
if (Datastore::isDevEnv() == true) {
putenv('DATASTORE_EMULATOR_HOST=http://localhost:8081');
// To run locally, you may still need to download a credentials file from console.cloud.google.com
//putenv('GOOGLE_APPLICATION_CREDENTIALS=' . __DIR__ . '/datastore_creds.json');
}
$datastore = new DatastoreClient([
'projectId' => Core::getProjectId()
// 'keyFilePath' => 'datastore_creds.json'
]);
Datastore::$ds = $datastore;
return Datastore::$ds;
}
/**
* Returns true if server running in development environment.
*
* @return boolean
*/
static function isDevEnv() {
if (isset(Core::$_isDevEnv)) return Core::$_isDevEnv;
Core::$_isDevEnv = (strpos(getenv('SERVER_SOFTWARE'), 'Development') === 0);
return Core::$_isDevEnv;
}
/**
* Formats fields and indexes for datastore.
* @param Datastore $ds
* @param Key $entityKey Datastore key.
* @param [] $fields
* @param [string] $indexes Keys to index.
* @return Entity
*/
static function entityWithIndexes(DatastoreClient $ds, $entityKey, $fields, $indexes = []) {
// Create exclude from indexes array.
$excludedIndexes = [];
foreach ($fields as $key => $value) {
if (in_array($key, $indexes) == false) {
$excludedIndexes[] = $key;
}
}
$entity = $ds->entity($entityKey, $fields, [
'excludeFromIndexes' => $excludedIndexes
]);
return $entity;
}
}
这是您将如何使用它将新实体插入数据存储区的方法
require 'vendor/autoload.php';
require 'Datastore.php';
$ds = Datastore::getOrCreate();
$key = $ds->key('MyEntityType');
$data = [
'name' => 'Foo!'
];
$indexes = ['name'];
$entity = Datastore::entityWithIndexes($ds, $key, $data, $indexes);
$ds->insert($entity);
如果您在使用模拟器时遇到问题,请尝试将您的代码部署到 App Engine 并查看是否有相同的错误。本地开发环境可能不稳定。
此外,请在此处查看官方 PHP 数据存储 API 文档。
通过作曲家包含google/cloud-datastore
库
$ composer require google/cloud-datastore
你可以使用下面的例子。
<?php
require 'vendor/autoload.php';
use Google\Cloud\Datastore\DatastoreClient;
$datastore = new DatastoreClient([
'projectId' => 'my_project'
]);
// 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);
更多详情:https ://github.com/GoogleCloudPlatform/google-cloud-php#google-cloud-datastore-ga