PHP

SoftLayer が提供する PHP ベースの API クライアントは、SOAP または XML-RPC の手動呼び出しから面倒な作業を取り除きます。PHP ベースの API クライアントを使用するには、以下のシステム要件が満たされなければなりません。

  • PHP 5.2.3 以上
  • 以下のいずれかの PHP 拡張機能:

SoftLayer の github プロファイルのプロジェクト・ページから、SoftLayer PHP API クライアントをダウンロードします。ダウンロード後、PHP プロジェクトのローカル・ディレクトリー、または PHP インストール済み環境の include_path に PHP API クライアントを抽出します。
Download the SoftLayer API PHP client

SOAP 呼び出しの実行

API クライアントがダウンロードされ、インストールされた後、最初の作業は、SoapClient.class.php ファイルをスクリプトに組み込むことです。このファイルは SoftLayer のクライアント・オブジェクトを定義します。

require_once('/path/to/SoftLayer/SoapClient.class.php');

次に、使用したい SoftLayer API サービス用のクライアント・オブジェクトを作成します。SoftLayer_SoapClient::getClient() はこれを処理し、4 つのパラメーターを使用します。

  • 呼び出したいサービスの名前。
  • 作業する特定のオブジェクトのオプションの ID 番号。SoftLayer_Account サービスを処理するか、特定のサーバー、サポート・チケット、請求書、またはその他のオブジェクトを処理しない場合は、null 値を渡します。この ID は、API 呼び出しで 初期化パラメーター を作成します。
  • 自分の API ユーザー名。
  • 自分の API キー。

以下のコード・スニペットは、上記で概要が示されたパラメーターを使用して SOAP 呼び出しを行う例を示しています。

require_once('/path/to/SoftLayer/SoapClient.class.php');
 
$apiUsername = 'set me';
$apiKey = 'set me';
 
/**
 * Create a client to the SoftLayer_Account API service.
 */
$client = SoftLayer_SoapClient::getClient('SoftLayer_Account', null, $apiUsername, $apiKey);
 
/**
 * Work directly with the SoftLayer_Hardware_Server record with the hardware id 
 * 1234.
 */
$serverId = 1234;
$client = SoftLayer_SoapClient::getClient('SoftLayer_Hardware_Server', $serverId, $apiUsername, $apiKey);

API クライアント・オブジェクトが準備完了になったら、クライアント・オブジェクトにとってローカルであるかのように SoftLayer API メソッドを呼び出してみましょう。API 呼び出しの結果を変数に割り当てて、呼び出しの結果を取得します。複合タイプのオブジェクトは PHP stdClass オブジェクトとして戻されます。同様に、複合タイプのパラメーターを API 呼び出しに渡す必要がある場合は stdClass オブジェクトを使用します。例:

require_once('/path/to/SoftLayer/SoapClient.class.php');
 
$apiUsername = 'set me';
$apiKey = 'set me';
$domainId = 1234;
 
$client = SoftLayer_SoapClient::getClient('SoftLayer_Dns_Domain', $domainId, $apiUsername, $apiKey);
 
/**
 * Create a new A record in a domain.
 */
$newRecord = $client->createARecord('myhost', '127.0.0.1', 86400);
 
echo 'New A record id: ' . $newRecord->id;
 
/**
 * Create a new domain record. 
 * 
 * This requires an API client with a null id, and use a stdClass object to model 
 *our new domain.
 */
$client = SoftLayer_SoapClient::getClient('SoftLayer_Dns_Domain', null, $apiUsername, $apiKey);
 
$domain = new stdClass();
$domain->name = 'example.org';
$domain->resourceRecords = array();
$domain->resourceRecords[0] = new stdClass();
$domain->resourceRecords[0]->host = '@';
$domain->resourceRecords[0]->data = '127.0.0.1';
$domain->resourceRecords[0]->type = 'a';
 
$newDomain = $client->createObject($domain);
 
echo 'New domain id: ' . $newDomain->id;

XML-RPC の使用

SoftLayer API PHP クライアントは、SOAP と XML-RPC の両方のプロトコルを同じようにサポートします。SOAP ではなく XML-RPC を使用したい場合は、次の 2 つの変更が必要です。

  • SoapClient.class.php ではなく、XmlrpcClient.class.php を組み込みます
  • SoftLayer_SoapClient::getClient() ではなく、SoftLayer_XmlrpcClient::getClient() を使用して API クライアントを作成します
    例:
require_once('/path/to/SoftLayer/XmlrpcClient.class.php');
 
$apiUsername = 'set me';
$apiKey = 'set me';
 
$client = SoftLayer_XmlrpcClient::getClient('SoftLayer_Account' null, $apiUsername, $apiKey);

オブジェクト・マスクの使用

まず、新しい SoftLayer_ObjectMask オブジェクトを宣言することによって、API 呼び出しでオブジェクト・マスクを作成します。新しいマスク・オブジェクトでローカル・プロパティーとして取得したいリレーショナル・プロパティーを定義します。最後に、setObjectMask() メソッドを使用して API クライアントにバインドします。この例では、以下の情報が取得されます。

  • アカウントの物理ハードウェア
  • ハードウェアのオペレーティング・システム記録
  • オペレーティング・システム・パスワード
  • ネットワーク・コンポーネント
  • ハードウェアが存在するデータ・センター
  • 各ハードウェア内のプロセッサーの数
require_once('/path/to/SoftLayer/SoapClient.class.php');
 
$apiUsername = 'set me';
$apiKey = 'set me';
 
$client = SoftLayer_SoapClient::getClient('SoftLayer_Account', null, $apiUsername, $apiKey);
 
/**
 * Retrieve items related to hardware.
 *
 * Operating system, operating system passwords, all network components, the
 * datacenter the server is located in, and the number of processors in each 
 * server.
 */
$objectMask = new SoftLayer_ObjectMask();
$objectMask->hardware->operatingSystem->passwords;
$objectMask->hardware->networkComponents;
$objectMask->hardware->datacenter;
$objectMask->hardware->processorCount;
$client->setObjectMask($objectMask);
 
$hardware = $client->getHardware();

結果制限の使用

データを呼び出す際、特に大規模グループから情報のほんの一部を引き出す照会を呼び出す場合、結果の制限を使用することで、戻りまでの待ち時間を大幅に減らすことができます。
クライアント・オブジェクトの setResultLimit() メソッドを使用して、API 呼び出しの結果の数を制限します。このメソッドは 2 つのパラメーターを使用します。

  • 呼び出しを制限するための結果の数。
  • 結果セットを開始するオプションのオフセット。
    以下の例では、結果の制限を設定するために必要な情報を組み込みます。
require_once('/path/to/SoftLayer/SoapClient.class.php');
 
$apiUsername = 'set me';
$apiKey = 'set me';
 
$client = SoftLayer_SoapClient::getClient('SoftLayer_Account', null, $apiUsername, $apiKey);
 
/**
 * Retrieve our first two open support tickets.
 */
$client->setResultLimit(2);
 
$tickets = $client->getOpenTickets();

エラー処理

SoftLayer API 呼び出しエラーは、例外として PHP クライアントによってスローされます。適切な処理を確実にするには、try/catch ブロック内で SoftLayer API を呼び出してください。SoftLayer API によって戻されたエラーにアクセスするには、PHP 例外クラスの getMessage() メソッドを使用します。以下のスクリプトはこれらのエラーの例を含んでいます。

require_once('/path/to/SoftLayer/SoapClient.class.php');
 
$apiUsername = 'set me!';
$apiKey = 'an incorrect API key';
 
$client = new SoftLayer_SoapClient('SoftLayer_Account', null, $apiUsername, $apiKey);
 
/**
 * Exit the script with the message:
 * "Unable to retrieve account information: Invalid API key"
 */
try {
    $account = $client->getObject();
} catch (Exception $e) {
    die('Unable to retrieve account information: ' . $e->getMessage());
}

参照 API コンポーネント

サービス

データ・タイプ

Methods