PHPでMomentoストレージを始める
PHPとMomento Storageをすぐに使い始める必要がある場合、このページには必要な基本的なAPIコールが含まれています。
詳しくは、GitHubのPHP SDKもご覧ください。
前提条件
- Momento API Keyが必要です。Momentoコンソールを使って生成できます。
- PHP 8.0 以上のインストール
- gRPC PHP 拡張 のインストール
- protobuf C 拡張 のインストール
- Composer のインストール - PHP 用の共通ライブラリと依存性マネージャ
PHP SDKを取得するためにcomposerを設定する
composer.json
ファイルに当社のリポジトリを追加し、依存関係として当社のSDKを追加する:
{
"require": {
"momentohq/client-sdk-php": "1.11.1"
}
}
composer update
を実行して、必要な前提条件をインストールします。
ライブラリをインポートして接続し、StorageClientオブジェクトを返す
このコードは必要なインポートを取り込み、StorageClientをインスタンス化します。
<?php
require "vendor/autoload.php";
use Momento\Auth\CredentialProvider;
use Momento\Config\Configurations\Storage\Laptop;
use Momento\Storage\PreviewStorageClient;
$storageClient = new PreviewStorageClient(
Laptop::latest(),
CredentialProvider::fromEnvironmentVariable("MOMENTO_API_KEY")
);
Momento Storageに新しいストアを作成する
この機能を使用して、アカウントに新しいストアを作成します。
$create_store_response = $storage_client->createStore($store_name);
if ($create_store_response->asSuccess()) {
print("Store $store_name created\n");
} elseif ($create_store_response->asAlreadyExists()) {
print("Store $store_name already exists\n");
} elseif ($err = $create_store_response->asError()) {
print("An error occurred while attempting to create $store_name: {$err->errorCode()} - {$err->message()}\n");
}
あなたのアカウントにある既存のストアをリストアップする
アカウントのストアの単純なリスト。
$list_stores_response = $storage_client->listStores();
if ($listSuccess = $list_stores_response->asSuccess()) {
print("Found stores:\n");
foreach ($listSuccess->stores() as $store) {
$store_name = $store->name();
print("- $store_name\n");
}
} elseif ($err = $list_stores_response->asError()) {
print("An error occurred while attempting to list stores: {$err->errorCode()} - {$err->message()}\n");
}
ストアに商品を書き込む
Put操作の簡単な例。
$put_response = $storage_client->putString($store_name, "test-key", "test-value");
if ($put_response->asSuccess()) {
print("Key 'test-key' stored successfully\n");
} elseif ($err = $put_response->asError()) {
print("An error occurred while attempting to store 'test-key': {$err->errorCode()} - {$err->message()}\n");
}
// Momento storage also supports int, float, and bytes types.
// Because strings in PHP are a series of bytes, the putBytes method accepts a string as the value.
$put_response = $storage_client->putBytes($store_name, "test-key", "test-value");
$put_response = $storage_client->putInt($store_name, "test-key", 42);
$put_response = $storage_client->putFloat($store_name, "test-key", 3.14);
ストアの商品を読む
これは、ストアから項目を取得する単純な読み取り操作の例です。
$get_response = $storage_client->get($store_name, "test-key");
if ($found = $get_response->asFound()) {
$value_type = $found->type();
if ($value_type == StorageValueType::STRING) {
print("Got string value: " . $found->valueString() . "\n");
} elseif ($value_type == StorageValueType::INT) {
print("Got integer value: " . $found->valueInt() . "\n");
} elseif ($value_type == StorageValueType::FLOAT) {
print("Got float value: " . $found->valueFloat() . "\n");
} elseif ($value_type == StorageValueType::BYTES) {
// This case is not expected in this example as PHP doesn't have a native byte type
print("Got bytes value: " . $found->valueBytes() . "\n");
}
// You may also pull the value directly from the response without type checking
print("Retrieved value for key 'test-key': {$get_response->value()}\n");
} elseif ($get_response->asNotFound()) {
print("Key 'test-key' was not found in store $store_name\n");
} elseif ($err = $get_response->asError()) {
print("An error occurred while attempting to get key 'test-key' from store $store_name: {$err->errorCode()} - {$err->message()}\n");
}
ストアからアイテムを削除する
これは、ストアからアイテムを削除する単純な削除操作の例です。
$delete_response = $storage_client->delete($store_name, "test-key");
if ($delete_response->asSuccess()) {
print("Key 'test-key' deleted successfully\n");
} elseif ($err = $delete_response->asError()) {
print("An error occurred while attempting to delete key 'test-key' from store $store_name: {$err->errorCode()} - {$err->message()}\n");
}
コードの実行
PHP SDK GitHub リポジトリの examples ディレクトリ に完全なサンプルがあります。
備考
これらの基本的なAPIコール以外のMomento APIコールの詳細については、APIリファレンスページをチェックしてください。